Exemple #1
0
    def apply_upgrades_and_downgrades(self, downgraded_privileges=None,
                                      upgraded_privileges=None,
                                      new_plan_version=None,
                                      verbose=False):

        if self.organization is not None:
            raise SubscriptionChangeError("Only domain upgrades and downgrades are possible.")

        if new_plan_version is None:
            new_plan_version = DefaultProductPlan.get_default_plan_by_domain(self.domain)

        if downgraded_privileges is None or upgraded_privileges is None:
            dp, up = get_change_status(None, new_plan_version)[1:]
            downgraded_privileges = downgraded_privileges or dp
            upgraded_privileges = upgraded_privileges or up

        if downgraded_privileges:
            downgrade_handler = DomainDowngradeActionHandler(
                self.domain, new_plan_version, downgraded_privileges,
                verbose=verbose,
            )
            if not downgrade_handler.get_response():
                raise SubscriptionChangeError("The downgrade was not successful.")

        if upgraded_privileges:
            upgrade_handler = DomainUpgradeActionHandler(
                self.domain, new_plan_version, upgraded_privileges,
                verbose=verbose,
            )
            if not upgrade_handler.get_response():
                raise SubscriptionChangeError("The upgrade was not successful.")
    def test_domain_changes(self):
        role = Mock()
        role.memberships_granted.all.return_value = []
        version = Mock()
        version.role.get_cached_role.return_value = role
        handler = DomainDowngradeActionHandler(
            self.domain, new_plan_version=version, changed_privs=REPORT_BUILDER_ADD_ON_PRIVS
        )

        conflicting_domain = Domain.get_by_name(self.domain_name)
        conflicting_domain.description = 'eggs'
        conflicting_domain.save()

        get_by_name_func = Domain.get_by_name
        with patch('corehq.apps.accounting.subscription_changes.Domain') as Domain_patch:
            Domain_patch.get_by_name.side_effect = lambda name: get_by_name_func(name)
            handler.get_response()
            Domain_patch.get_by_name.assert_called_with(self.domain_name)
Exemple #3
0
    def test_domain_changes(self):
        role = Mock()
        role.memberships_granted.all.return_value = []
        version = Mock()
        version.role.get_cached_role.return_value = role
        handler = DomainDowngradeActionHandler(
            self.domain, new_plan_version=version, changed_privs=REPORT_BUILDER_ADD_ON_PRIVS
        )

        conflicting_domain = Domain.get_by_name(self.domain_name)
        conflicting_domain.description = 'eggs'
        conflicting_domain.save()

        get_by_name_func = Domain.get_by_name
        with patch('corehq.apps.accounting.subscription_changes.Domain') as Domain_patch:
            Domain_patch.get_by_name.side_effect = lambda name: get_by_name_func(name)
            handler.get_response()
            Domain_patch.get_by_name.assert_called_with(self.domain_name)