@@ -1640,7 +1640,15 @@ def test_handle_increased_credits_success_when_credits_not_approved(self, issuan
16401640
16411641
16421642class TestDecreasedCreditHandler (BaseSupplementaryVersionServiceTest ):
1643- def test_can_handle_decreased_credits (self ):
1643+ @pytest .mark .parametrize (
1644+ "issuance_status" ,
1645+ [
1646+ ComplianceEarnedCredit .IssuanceStatus .DECLINED ,
1647+ ComplianceEarnedCredit .IssuanceStatus .ISSUANCE_REQUESTED ,
1648+ ComplianceEarnedCredit .IssuanceStatus .CHANGES_REQUIRED ,
1649+ ],
1650+ )
1651+ def test_can_handle_decreased_credits_no_previous_approval (self , issuance_status ):
16441652 # Arrange
16451653 with pgtrigger .ignore ('reporting.ReportComplianceSummary:immutable_report_version' ):
16461654 self .previous_summary = baker .make_recipe (
@@ -1667,7 +1675,7 @@ def test_can_handle_decreased_credits(self):
16671675 'compliance.tests.utils.compliance_earned_credit' ,
16681676 compliance_report_version = self .original_report_version ,
16691677 earned_credits_amount = 500 ,
1670- issuance_status = ComplianceEarnedCredit . IssuanceStatus . DECLINED ,
1678+ issuance_status = issuance_status ,
16711679 bccr_trading_name = 'Test Trading Name' ,
16721680 bccr_holding_account_id = '123' ,
16731681 )
@@ -1678,6 +1686,52 @@ def test_can_handle_decreased_credits(self):
16781686 # Assert
16791687 assert result is True
16801688
1689+ def test_cannot_handle_decreased_credits_already_approved (self ):
1690+ # Arrange
1691+ with pgtrigger .ignore ('reporting.ReportComplianceSummary:immutable_report_version' ):
1692+ self .previous_summary = baker .make_recipe (
1693+ 'reporting.tests.utils.report_compliance_summary' ,
1694+ excess_emissions = 0 ,
1695+ credited_emissions = Decimal ('600' ),
1696+ report_version = self .report_version_1 ,
1697+ )
1698+ self .new_summary = baker .make_recipe (
1699+ 'reporting.tests.utils.report_compliance_summary' ,
1700+ excess_emissions = 0 ,
1701+ credited_emissions = Decimal ('500' ),
1702+ report_version = self .report_version_2 ,
1703+ )
1704+ self .compliance_report = baker .make_recipe (
1705+ 'compliance.tests.utils.compliance_report' , report = self .report , compliance_period_id = 1
1706+ )
1707+ self .original_report_version = baker .make_recipe (
1708+ 'compliance.tests.utils.compliance_report_version' ,
1709+ report_compliance_summary = self .previous_summary ,
1710+ is_supplementary = False ,
1711+ )
1712+ baker .make_recipe (
1713+ 'compliance.tests.utils.compliance_earned_credit' ,
1714+ compliance_report_version = self .original_report_version ,
1715+ earned_credits_amount = 500 ,
1716+ issuance_status = ComplianceEarnedCredit .IssuanceStatus .APPROVED ,
1717+ bccr_trading_name = 'Test Trading Name' ,
1718+ bccr_holding_account_id = '123' ,
1719+ )
1720+
1721+ # Act
1722+ result = DecreasedCreditHandler .can_handle (self .new_summary , self .previous_summary )
1723+
1724+ # Assert
1725+ assert result is False
1726+
1727+ @pytest .mark .parametrize (
1728+ "issuance_status" ,
1729+ [
1730+ ComplianceEarnedCredit .IssuanceStatus .DECLINED ,
1731+ ComplianceEarnedCredit .IssuanceStatus .ISSUANCE_REQUESTED ,
1732+ ComplianceEarnedCredit .IssuanceStatus .CHANGES_REQUIRED ,
1733+ ],
1734+ )
16811735 @patch ('compliance.service.supplementary_version_service.DecreasedCreditHandler.handle' )
16821736 @patch ('compliance.service.supplementary_version_service.IncreasedCreditHandler.handle' )
16831737 @patch ('compliance.service.supplementary_version_service.NoChangeHandler.handle' )
@@ -1690,6 +1744,7 @@ def test_correctly_calls_decreased_credit_handler(
16901744 mock_no_change_handler ,
16911745 mock_increased_credit_handler ,
16921746 mock_decreased_credit_handler ,
1747+ issuance_status ,
16931748 ):
16941749 # Arrange
16951750 with pgtrigger .ignore ('reporting.ReportComplianceSummary:immutable_report_version' ):
@@ -1718,7 +1773,7 @@ def test_correctly_calls_decreased_credit_handler(
17181773 'compliance.tests.utils.compliance_earned_credit' ,
17191774 compliance_report_version = self .previous_compliance_report_version ,
17201775 earned_credits_amount = 800 ,
1721- issuance_status = ComplianceEarnedCredit . IssuanceStatus . DECLINED ,
1776+ issuance_status = issuance_status ,
17221777 bccr_trading_name = 'Test Trading Name' ,
17231778 bccr_holding_account_id = '123' ,
17241779 )
@@ -1743,7 +1798,15 @@ def test_correctly_calls_decreased_credit_handler(
17431798 mock_no_change_handler .assert_not_called ()
17441799 mock_increased_credit_handler .assert_not_called ()
17451800
1746- def test_handle_decreased_credits_success (self ):
1801+ @pytest .mark .parametrize (
1802+ "issuance_status" ,
1803+ [
1804+ ComplianceEarnedCredit .IssuanceStatus .DECLINED ,
1805+ ComplianceEarnedCredit .IssuanceStatus .ISSUANCE_REQUESTED ,
1806+ ComplianceEarnedCredit .IssuanceStatus .CHANGES_REQUIRED ,
1807+ ],
1808+ )
1809+ def test_handle_decreased_credits_success (self , issuance_status ):
17471810 # Arrange
17481811 with pgtrigger .ignore ('reporting.ReportComplianceSummary:immutable_report_version' ):
17491812 self .previous_summary = baker .make_recipe (
@@ -1767,7 +1830,7 @@ def test_handle_decreased_credits_success(self):
17671830 'compliance.tests.utils.compliance_earned_credit' ,
17681831 compliance_report_version = self .original_report_version ,
17691832 earned_credits_amount = 800 ,
1770- issuance_status = ComplianceEarnedCredit . IssuanceStatus . DECLINED ,
1833+ issuance_status = issuance_status ,
17711834 bccr_trading_name = 'Test Trading Name' ,
17721835 bccr_holding_account_id = '123' ,
17731836 )
@@ -1787,8 +1850,10 @@ def test_handle_decreased_credits_success(self):
17871850 assert new_compliance_version .is_supplementary is True
17881851 assert new_compliance_version .previous_version == self .original_report_version
17891852 assert original_credit_record .earned_credits_amount == Decimal ('800' )
1853+
17901854 assert new_credit_record .earned_credits_amount == Decimal ('500' )
17911855 assert new_credit_record .issuance_status == ComplianceEarnedCredit .IssuanceStatus .CREDITS_NOT_ISSUED
1856+ assert original_credit_record .issuance_status == ComplianceEarnedCredit .IssuanceStatus .DECLINED
17921857
17931858
17941859class TestSupercededHandler (BaseSupplementaryVersionServiceTest ):
0 commit comments