@@ -438,124 +438,58 @@ def test_get_compliance_report_versions_for_dashboard_sorts_and_filters(
438438 def test_get_compliance_report_versions_annotates_status_correctly (
439439 self ,
440440 ):
441- # setup
442441 user_operator = make_recipe ('registration.tests.utils.approved_user_operator' )
443442
444- # 1 - not met
445- test_data_1 = ComplianceTestHelper .build_test_data (
446- crv_status = ComplianceReportVersion .ComplianceStatus .OBLIGATION_NOT_MET
447- )
448- test_data_1 .operation .operator = user_operator .operator
449- test_data_1 .report .operator = user_operator .operator
450- test_data_1 .operation .save ()
451- test_data_1 .report .save ()
452-
453- # # 2 - met
454- test_data_2 = ComplianceTestHelper .build_test_data (
455- crv_status = ComplianceReportVersion .ComplianceStatus .OBLIGATION_FULLY_MET
456- )
457- test_data_2 .operation .operator = user_operator .operator
458- test_data_2 .report .operator = user_operator .operator
459- test_data_2 .operation .save ()
460- test_data_2 .report .save ()
461-
462- # # 3 - pending invoice creation
463- test_data_3 = ComplianceTestHelper .build_test_data (
464- crv_status = ComplianceReportVersion .ComplianceStatus .OBLIGATION_PENDING_INVOICE_CREATION
465- )
466- test_data_3 .operation .operator = user_operator .operator
467- test_data_3 .report .operator = user_operator .operator
468- test_data_3 .operation .save ()
469- test_data_3 .report .save ()
470-
471- # # 4 - not requested
472- test_data_4 = ComplianceTestHelper .build_test_data (
473- crv_status = ComplianceReportVersion .ComplianceStatus .EARNED_CREDITS
474- )
475- test_data_4 .operation .operator = user_operator .operator
476- test_data_4 .report .operator = user_operator .operator
477- test_data_4 .compliance_earned_credit .issuance_status = ComplianceEarnedCredit .IssuanceStatus .CREDITS_NOT_ISSUED
478- test_data_4 .compliance_earned_credit .save ()
479- test_data_4 .operation .save ()
480- test_data_4 .report .save ()
443+ def build (crv_status ):
444+ td = ComplianceTestHelper .build_test_data (crv_status = crv_status )
445+ td .operation .operator = user_operator .operator
446+ td .report .operator = user_operator .operator
447+ td .operation .save ()
448+ td .report .save ()
449+ return td
450+
451+ # Obligation statuses
452+ td_not_met = build (ComplianceReportVersion .ComplianceStatus .OBLIGATION_NOT_MET )
453+ td_fully_met = build (ComplianceReportVersion .ComplianceStatus .OBLIGATION_FULLY_MET )
454+ td_pending_invoice = build (ComplianceReportVersion .ComplianceStatus .OBLIGATION_PENDING_INVOICE_CREATION )
455+
456+ # Earned credits — vary by issuance_status
457+ earned_credit_cases = [
458+ (ComplianceEarnedCredit .IssuanceStatus .CREDITS_NOT_ISSUED , "Earned credits - not requested" ),
459+ (ComplianceEarnedCredit .IssuanceStatus .ISSUANCE_REQUESTED , "Earned credits - issuance requested" ),
460+ (ComplianceEarnedCredit .IssuanceStatus .APPROVED , "Earned credits - approved" ),
461+ (ComplianceEarnedCredit .IssuanceStatus .DECLINED , "Earned credits - declined" ),
462+ (ComplianceEarnedCredit .IssuanceStatus .CHANGES_REQUIRED , "Earned credits - changes required" ),
463+ ]
464+ earned_credit_data = []
465+ for issuance_status , _ in earned_credit_cases :
466+ td = build (ComplianceReportVersion .ComplianceStatus .EARNED_CREDITS )
467+ td .compliance_earned_credit .issuance_status = issuance_status
468+ td .compliance_earned_credit .save ()
469+ earned_credit_data .append (td )
470+
471+ # Earned credits — no issuance record
472+ td_no_credit_record = build (ComplianceReportVersion .ComplianceStatus .EARNED_CREDITS )
473+ td_no_credit_record .compliance_earned_credit .delete ()
474+
475+ # Requires manual handling
476+ td_manual = build (ComplianceReportVersion .ComplianceStatus .REQUIRES_MANUAL_HANDLING )
481477
482- # # 5 - issuance requested
483- test_data_5 = ComplianceTestHelper .build_test_data (
484- crv_status = ComplianceReportVersion .ComplianceStatus .EARNED_CREDITS
485- )
486- test_data_5 .operation .operator = user_operator .operator
487- test_data_5 .report .operator = user_operator .operator
488- test_data_5 .compliance_earned_credit .issuance_status = ComplianceEarnedCredit .IssuanceStatus .ISSUANCE_REQUESTED
489- test_data_5 .compliance_earned_credit .save ()
490- test_data_5 .operation .save ()
491- test_data_5 .report .save ()
492-
493- # # 6 - approved
494- test_data_6 = ComplianceTestHelper .build_test_data (
495- crv_status = ComplianceReportVersion .ComplianceStatus .EARNED_CREDITS
496- )
497- test_data_6 .operation .operator = user_operator .operator
498- test_data_6 .report .operator = user_operator .operator
499- test_data_6 .compliance_earned_credit .issuance_status = ComplianceEarnedCredit .IssuanceStatus .APPROVED
500- test_data_6 .compliance_earned_credit .save ()
501- test_data_6 .operation .save ()
502- test_data_6 .report .save ()
503-
504- # # 7 - declined
505- test_data_7 = ComplianceTestHelper .build_test_data (
506- crv_status = ComplianceReportVersion .ComplianceStatus .EARNED_CREDITS
507- )
508- test_data_7 .operation .operator = user_operator .operator
509- test_data_7 .report .operator = user_operator .operator
510- test_data_7 .compliance_earned_credit .issuance_status = ComplianceEarnedCredit .IssuanceStatus .DECLINED
511- test_data_7 .compliance_earned_credit .save ()
512- test_data_7 .operation .save ()
513- test_data_7 .report .save ()
514-
515- # # 8 - changes required
516- test_data_8 = ComplianceTestHelper .build_test_data (
517- crv_status = ComplianceReportVersion .ComplianceStatus .EARNED_CREDITS
518- )
519- test_data_8 .operation .operator = user_operator .operator
520- test_data_8 .report .operator = user_operator .operator
521- test_data_8 .compliance_earned_credit .issuance_status = ComplianceEarnedCredit .IssuanceStatus .CHANGES_REQUIRED
522- test_data_8 .compliance_earned_credit .save ()
523- test_data_8 .operation .save ()
524- test_data_8 .report .save ()
525-
526- # # 9 - earned credits
527- test_data_9 = ComplianceTestHelper .build_test_data (
528- crv_status = ComplianceReportVersion .ComplianceStatus .EARNED_CREDITS
529- )
530- test_data_9 .operation .operator = user_operator .operator
531- test_data_9 .report .operator = user_operator .operator
532- test_data_9 .operation .save ()
533- test_data_9 .report .save ()
534- test_data_9 .compliance_earned_credit .delete ()
535-
536- # checks
537478 result = ComplianceDashboardService .get_compliance_report_versions_for_dashboard (
538479 user_guid = user_operator .user_id ,
539480 sort_field = "id" ,
540481 sort_order = "asc" ,
541482 filters = _NoopFilters (),
542483 )
543484
544- assert result [0 ].id == test_data_1 .compliance_report_version .id
545- assert result [0 ].display_status == "Obligation - not met"
546- assert result [1 ].id == test_data_2 .compliance_report_version .id
547- assert result [1 ].display_status == "Obligation - met"
548- assert result [2 ].id == test_data_3 .compliance_report_version .id
549- assert result [2 ].display_status == "Obligation - pending invoice creation"
550- assert result [3 ].id == test_data_4 .compliance_report_version .id
551- assert result [3 ].display_status == "Earned credits - not requested"
552- assert result [4 ].id == test_data_5 .compliance_report_version .id
553- assert result [4 ].display_status == "Earned credits - issuance requested"
554- assert result [5 ].id == test_data_6 .compliance_report_version .id
555- assert result [5 ].display_status == "Earned credits - approved"
556- assert result [6 ].id == test_data_7 .compliance_report_version .id
557- assert result [6 ].display_status == "Earned credits - declined"
558- assert result [7 ].id == test_data_8 .compliance_report_version .id
559- assert result [7 ].display_status == "Earned credits - changes required"
560- assert result [8 ].id == test_data_9 .compliance_report_version .id
561- assert result [8 ].display_status == "Earned credits"
485+ expected = [
486+ (td_not_met , "Obligation - not met" ),
487+ (td_fully_met , "Obligation - met" ),
488+ (td_pending_invoice , "Obligation - pending invoice creation" ),
489+ * zip (earned_credit_data , [status for _ , status in earned_credit_cases ]),
490+ (td_no_credit_record , "Earned credits" ),
491+ (td_manual , "Supplementary report - action required" ),
492+ ]
493+ for i , (td , expected_status ) in enumerate (expected ):
494+ assert result [i ].id == td .compliance_report_version .id
495+ assert result [i ].display_status == expected_status
0 commit comments