def test_on_complete_embargo_creates_registration_for_draft_initiator(self, mock_enquque): user = factories.UserFactory() end_date = timezone.now() + datetime.timedelta(days=366) # <- leap year approval = DraftRegistrationApproval( meta={ 'registration_choice': 'embargo', 'embargo_end_date': end_date.isoformat() } ) approval.save() project = factories.ProjectFactory(creator=user) registration_schema = MetaSchema.objects.get(name='Prereg Challenge', schema_version=2) draft = factories.DraftRegistrationFactory( branched_from=project, registration_schema=registration_schema, ) draft.approval = approval draft.save() approval._on_complete(user) draft.reload() registered_node = draft.registered_node assert registered_node is not None assert registered_node.is_pending_embargo assert registered_node.registered_user == draft.initiator
def test_on_complete_immediate_creates_registration_for_draft_initiator(self, mock_enquque): user = factories.UserFactory() project = factories.ProjectFactory(creator=user) registration_schema = MetaSchema.find_one( Q('name', 'eq', 'Prereg Challenge') & Q('schema_version', 'eq', 2) ) draft = factories.DraftRegistrationFactory( branched_from=project, registration_schema=registration_schema, ) approval = DraftRegistrationApproval( meta={ 'registration_choice': 'immediate' } ) approval.save() draft.approval = approval draft.save() approval._on_complete(user) draft.reload() registered_node = draft.registered_node assert registered_node is not None assert registered_node.is_pending_registration assert registered_node.registered_user == draft.initiator
def test_approval_after_initiator_is_merged_into_another_user(self, mock_enqueue): approver = factories.UserFactory() administer_permission = Permission.objects.get(codename='administer_prereg') approver.user_permissions.add(administer_permission) approver.save() mergee = factories.UserFactory(fullname='Manny Mergee') merger = factories.UserFactory(fullname='Merve Merger') project = factories.ProjectFactory(creator=mergee) registration_schema = MetaSchema.objects.get(name='Prereg Challenge', schema_version=2) draft = factories.DraftRegistrationFactory( branched_from=project, registration_schema=registration_schema, ) merger.merge_user(mergee) approval = DraftRegistrationApproval( meta={ 'registration_choice': 'immediate' } ) approval.save() draft.approval = approval draft.save() approval.approve(approver) draft.reload() registered_node = draft.registered_node assert registered_node.registered_user == merger
def test_approval_after_initiator_is_merged_into_another_user(self, mock_enqueue): approver = factories.UserFactory() approver.add_system_tag(settings.PREREG_ADMIN_TAG) mergee = factories.UserFactory(fullname='Manny Mergee') merger = factories.UserFactory(fullname='Merve Merger') project = factories.ProjectFactory(creator=mergee) registration_schema = MetaSchema.find_one( Q('name', 'eq', 'Prereg Challenge') & Q('schema_version', 'eq', 2) ) draft = factories.DraftRegistrationFactory( branched_from=project, registration_schema=registration_schema, ) merger.merge_user(mergee) approval = DraftRegistrationApproval( meta={ 'registration_choice': 'immediate' } ) approval.save() draft.approval = approval draft.save() approval.approve(approver) draft.reload() registered_node = draft.registered_node assert registered_node.registered_user == merger
def submit_for_review(self, initiated_by, meta, save=False): approval = DraftRegistrationApproval(meta=meta) approval.save() self.approval = approval self.add_status_log(initiated_by, DraftRegistrationLog.SUBMITTED) if save: self.save()
def submit_for_review(self, initiated_by, meta, save=False): approval = DraftRegistrationApproval( meta=meta ) approval.save() self.approval = approval self.add_status_log(initiated_by, DraftRegistrationLog.SUBMITTED) if save: self.save()
def test_approval_requires_only_a_single_authorizer(self): approval = DraftRegistrationApproval( meta={ 'registration_choice': 'immediate', } ) approval.save() with mock.patch.object(approval, '_on_complete') as mock_on_complete: authorizer1 = factories.AuthUserFactory() authorizer1.add_system_tag(settings.PREREG_ADMIN_TAG) approval.approve(authorizer1) assert mock_on_complete.called assert approval.is_approved
def test_approval_requires_only_a_single_authorizer(self): approval = DraftRegistrationApproval( meta={ 'registration_choice': 'immediate', } ) approval.save() with mock.patch.object(approval, '_on_complete') as mock_on_complete: authorizer1 = factories.AuthUserFactory() administer_permission = Permission.objects.get(codename='administer_prereg') authorizer1.user_permissions.add(administer_permission) authorizer1.save() approval.approve(authorizer1) assert mock_on_complete.called assert approval.is_approved
def draft_rejected(self, user, project): draft = DraftRegistrationFactory( initiator=user, registration_schema=get_prereg_schema()) draft.approval = DraftRegistrationApproval( meta={'registration_choice': 'immediate'}) draft.approval.state = 'rejected' draft.approval.save() draft.save() return draft
def test_on_reject(self, mock_send_mail): user = factories.UserFactory() approval = DraftRegistrationApproval( meta={ 'registration_choice': 'immediate' } ) approval.save() project = factories.ProjectFactory(creator=user) registration_schema = MetaSchema.objects.get(name='Prereg Challenge', schema_version=2) draft = factories.DraftRegistrationFactory( branched_from=project, registration_schema=registration_schema, ) draft.approval = approval draft.save() approval._on_reject(user) assert approval.meta == {} assert mock_send_mail.call_count == 1
def draft_approved_and_registered(self, user, project): draft = DraftRegistrationFactory( initiator=user, registration_schema=get_prereg_schema()) draft.approval = DraftRegistrationApproval( meta={'registration_choice': 'immediate'}) draft.approval.state = 'approved' draft.approval.save() draft.registered_node = RegistrationFactory(creator=user, project=project, is_public=True) draft.save() return draft
def test_on_complete_immediate_creates_registration_for_draft_initiator(self, mock_enquque): ensure_schemas() user = factories.UserFactory() project = factories.ProjectFactory(creator=user) registration_schema = MetaSchema.find_one( Q('name', 'eq', 'Prereg Challenge') & Q('schema_version', 'eq', 2) ) draft = factories.DraftRegistrationFactory( branched_from=project, registration_schema=registration_schema, ) approval = DraftRegistrationApproval( meta={ 'registration_choice': 'immediate' } ) approval.save() draft.approval = approval draft.save() approval._on_complete(user) draft.reload() registered_node = draft.registered_node assert registered_node is not None assert registered_node.is_pending_registration assert registered_node.registered_user == draft.initiator
def test_on_complete_embargo_creates_registration_for_draft_initiator( self, mock_enquque): user = factories.UserFactory() end_date = timezone.now() + datetime.timedelta( days=366) # <- leap year approval = DraftRegistrationApproval( meta={ 'registration_choice': 'embargo', 'embargo_end_date': end_date.isoformat() }) approval.save() project = factories.ProjectFactory(creator=user) registration_schema = MetaSchema.objects.get(name='Prereg Challenge', schema_version=2) draft = factories.DraftRegistrationFactory( branched_from=project, registration_schema=registration_schema, ) draft.approval = approval draft.save() approval._on_complete(user) draft.reload() registered_node = draft.registered_node assert registered_node is not None assert registered_node.is_pending_embargo assert registered_node.registered_user == draft.initiator
def test_approval_after_initiator_is_merged_into_another_user( self, mock_enqueue): approver = factories.UserFactory() approver.add_system_tag(settings.PREREG_ADMIN_TAG) mergee = factories.UserFactory(fullname='Manny Mergee') merger = factories.UserFactory(fullname='Merve Merger') project = factories.ProjectFactory(creator=mergee) registration_schema = MetaSchema.objects.get(name='Prereg Challenge', schema_version=2) draft = factories.DraftRegistrationFactory( branched_from=project, registration_schema=registration_schema, ) merger.merge_user(mergee) approval = DraftRegistrationApproval( meta={'registration_choice': 'immediate'}) approval.save() draft.approval = approval draft.save() approval.approve(approver) draft.reload() registered_node = draft.registered_node assert registered_node.registered_user == merger
def test_approval_after_initiator_is_merged_into_another_user( self, mock_enqueue): approver = factories.UserFactory() administer_permission = Permission.objects.get( codename='administer_prereg') approver.user_permissions.add(administer_permission) approver.save() mergee = factories.UserFactory(fullname='Manny Mergee') merger = factories.UserFactory(fullname='Merve Merger') project = factories.ProjectFactory(creator=mergee) registration_schema = RegistrationSchema.objects.get( name='Prereg Challenge', schema_version=2) draft = factories.DraftRegistrationFactory( branched_from=project, registration_schema=registration_schema, ) merger.merge_user(mergee) approval = DraftRegistrationApproval( meta={'registration_choice': 'immediate'}) approval.save() draft.approval = approval draft.save() approval.approve(approver) draft.reload() registered_node = draft.registered_node assert registered_node.registered_user == merger
def test_approval_requires_only_a_single_authorizer(self): approval = DraftRegistrationApproval( meta={ 'registration_choice': 'immediate', }) approval.save() with mock.patch.object(approval, '_on_complete') as mock_on_complete: authorizer1 = factories.AuthUserFactory() authorizer1.add_system_tag(settings.PREREG_ADMIN_TAG) approval.approve(authorizer1) assert mock_on_complete.called assert approval.is_approved
def test_approval_requires_only_a_single_authorizer(self): approval = DraftRegistrationApproval( meta={ 'registration_choice': 'immediate', }) approval.save() with mock.patch.object(approval, '_on_complete') as mock_on_complete: authorizer1 = factories.AuthUserFactory() administer_permission = Permission.objects.get( codename='administer_prereg') authorizer1.user_permissions.add(administer_permission) authorizer1.save() approval.approve(authorizer1) assert mock_on_complete.called assert approval.is_approved
def test_on_reject(self, mock_send_mail): user = factories.UserFactory() approval = DraftRegistrationApproval( meta={'registration_choice': 'immediate'}) approval.save() project = factories.ProjectFactory(creator=user) registration_schema = MetaSchema.objects.get(name='Prereg Challenge', schema_version=2) draft = factories.DraftRegistrationFactory( branched_from=project, registration_schema=registration_schema, ) draft.approval = approval draft.save() approval._on_reject(user) assert approval.meta == {} assert mock_send_mail.call_count == 1