Coverage for benefits/enrollment_littlepay/migrations/0004_littlepayconfig.py: 63%

15 statements  

« prev     ^ index     » next       coverage.py v7.10.2, created at 2025-08-08 16:26 +0000

1# Generated by Django 5.1.7 on 2025-07-14 09:21 

2 

3import benefits.core.models.common 

4import benefits.secrets 

5import django.db.models.deletion 

6from django.db import migrations, models 

7 

8 

9def migrate_littlepay_config(apps, schema_editor): 

10 OldLittlepayConfig = apps.get_model("enrollment_littlepay", "OldLittlepayConfig") 

11 LittlepayConfig = apps.get_model("enrollment_littlepay", "NewLittlepayConfig") 

12 

13 for old_config in OldLittlepayConfig.objects.all(): 13 ↛ 14line 13 didn't jump to line 14 because the loop on line 13 never started

14 new_config = LittlepayConfig.objects.create( 

15 environment=old_config.environment, 

16 agency_slug=old_config.agency_slug, 

17 audience=old_config.audience, 

18 client_id=old_config.client_id, 

19 client_secret_name=old_config.client_secret_name, 

20 ) 

21 

22 if hasattr(old_config, "transitagency"): 

23 new_config.transit_agency = old_config.transitagency 

24 

25 new_config.save() 

26 

27 

28class Migration(migrations.Migration): 

29 

30 dependencies = [ 

31 ("core", "0054_transitprocessorconfig"), 

32 ("enrollment_littlepay", "0003_rename_littlepayconfig_oldlittlepayconfig"), 

33 ] 

34 

35 operations = [ 

36 migrations.CreateModel( 

37 name="NewLittlepayConfig", 

38 fields=[ 

39 ( 

40 "transitprocessorconfig_ptr", 

41 models.OneToOneField( 

42 auto_created=True, 

43 on_delete=django.db.models.deletion.CASCADE, 

44 parent_link=True, 

45 primary_key=True, 

46 serialize=False, 

47 to="core.transitprocessorconfig", 

48 ), 

49 ), 

50 ( 

51 "audience", 

52 models.TextField( 

53 blank=True, 

54 default="", 

55 help_text="This agency's audience value used to access the TransitProcessor's API.", 

56 ), 

57 ), 

58 ( 

59 "client_id", 

60 models.TextField( 

61 blank=True, 

62 default="", 

63 help_text="This agency's client_id value used to access the TransitProcessor's API.", 

64 ), 

65 ), 

66 ( 

67 "client_secret_name", 

68 benefits.core.models.common.SecretNameField( 

69 blank=True, 

70 default="", 

71 help_text="The name of the secret containing this agency's client_secret value used to access the TransitProcessor's API.", # noqa 

72 max_length=127, 

73 validators=[benefits.secrets.SecretNameValidator()], 

74 ), 

75 ), 

76 ], 

77 bases=("core.transitprocessorconfig",), 

78 ), 

79 migrations.RunPython(migrate_littlepay_config), 

80 ]