def registration_approval(provider=None): if provider is None: return RegistrationApprovalFactory() sanction = RegistrationApprovalFactory() registration = sanction.target_registration registration.provider = provider registration.update_moderation_state() registration.save() return sanction
def registration_approval(self, provider): sanction = RegistrationApprovalFactory() registration = sanction.target_registration registration.provider = provider registration.update_moderation_state() registration.save() return sanction
def setUp(self): self.maxDiff = None super(TestRegistrationUpdate, self).setUp() self.user = AuthUserFactory() self.user_two = AuthUserFactory() self.user_three = AuthUserFactory() self.registration_approval = RegistrationApprovalFactory(state='unapproved', approve=False, user=self.user) self.unapproved_registration = Registration.find_one(Q('registration_approval', 'eq', self.registration_approval)) self.unapproved_url = '/{}registrations/{}/'.format(API_BASE, self.unapproved_registration._id) self.public_project = ProjectFactory(title="Project One", is_public=True, creator=self.user) self.private_project = ProjectFactory(title="Project Two", is_public=False, creator=self.user) self.public_registration = RegistrationFactory(project=self.public_project, creator=self.user, is_public=True) self.private_registration = RegistrationFactory(project=self.private_project, creator=self.user) self.public_url = '/{}registrations/{}/'.format(API_BASE, self.public_registration._id) self.private_url = '/{}registrations/{}/'.format(API_BASE, self.private_registration._id) self.private_registration.add_contributor(self.user_two, permissions=[permissions.READ]) self.private_registration.add_contributor(self.user_three, permissions=[permissions.WRITE]) self.private_registration.save() self.payload = { "data": { "id": self.private_registration._id, "type": "registrations", "attributes": { "public": True, } } }
def setUp(self): super().setUp() self.embargo = EmbargoFactory() self.registration_approval = RegistrationApprovalFactory() self.retraction = RetractionFactory() self.embargo_termination = EmbargoTerminationApprovalFactory() self.provider = RegistrationProviderFactory() for sanction in [self.embargo, self.registration_approval, self.retraction, self.embargo_termination]: registration = sanction.target_registration registration.provider = self.provider registration.save() # EmbargoTerminationFactory actually calls terminate_embargo, # which updates state in the new world self.embargo_termination.target_registration.moderation_state = RegistrationModerationStates.INITIAL.db_name self.embargo_termination.target_registration.save()
def registration_approval(self, user): return RegistrationApprovalFactory(state='unapproved', approve=False, user=user)
class TestCorrectRegistrationModerationState(OsfTestCase): def setUp(self): super().setUp() self.embargo = EmbargoFactory() self.registration_approval = RegistrationApprovalFactory() self.retraction = RetractionFactory() self.embargo_termination = EmbargoTerminationApprovalFactory() self.provider = RegistrationProviderFactory() for sanction in [self.embargo, self.registration_approval, self.retraction, self.embargo_termination]: registration = sanction.target_registration registration.provider = self.provider registration.save() # EmbargoTerminationFactory actually calls terminate_embargo, # which updates state in the new world self.embargo_termination.target_registration.moderation_state = RegistrationModerationStates.INITIAL.db_name self.embargo_termination.target_registration.save() def test_correct_registration_moderation_states(self): self.embargo.approval_stage = ApprovalStates.MODERATOR_REJECTED self.embargo.save() self.registration_approval.approval_stage = ApprovalStates.APPROVED self.registration_approval.save() self.retraction.approval_stage = ApprovalStates.PENDING_MODERATION self.retraction.save() self.embargo_termination.approval_stage = ApprovalStates.REJECTED self.embargo_termination.save() empty_state_counts = {state.db_name: 0 for state in RegistrationModerationStates} expected_initial_states = dict(empty_state_counts) expected_initial_states.update({'initial': 4}) assert self.provider.get_reviewable_state_counts() == expected_initial_states corrected_count = correct_registration_moderation_states() assert corrected_count == 4 expected_end_states = dict(empty_state_counts) expected_end_states.update( {'accepted': 1, 'rejected': 1, 'pending_withdraw': 1, 'embargo': 1} ) assert self.provider.get_reviewable_state_counts() == expected_end_states def test_correct_registration_moderation_states_only_collects_initial_registrations(self): # Implicitly invoke update_moderation_state. # We should not attempt to update state on these Registrations. # Also should not attempt to update self.registration_approval, which should be in initial self.embargo.to_COMPLETED() self.retraction.to_APPROVED() with mock.patch.object(Registration, 'update_moderation_state') as mock_update: correct_registration_moderation_states() assert mock_update.call_count == 1 def test_correct_registration_moderation_states_ignores_deleted_registrations(self): deleted_registration = self.registration_approval.target_registration deleted_registration.deleted = timezone.now() deleted_registration.save() with mock.patch.object(Registration, 'update_moderation_state') as mock_update: correct_registration_moderation_states() # Shouldn't attempt to update self.registration_approval (deleted) # or self.embargo (correctly in 'initial') assert mock_update.call_count == 2 def test_correct_registration_moderation_states_only_reports_updated_registrations(self): # INITIAL is the correct state for a Registration with an # Embargo or a RegistrationApproval in UNAPPROVED state corrected_count = correct_registration_moderation_states() assert corrected_count == 2
def registration_approval(self): return RegistrationApprovalFactory()