def test_edit_non_network_provider(self): self.login_creator() self.erase_logging_file() data = self._DATA data["is_network"] = False details_data = self._DETAILS_DATA data.update(**details_data) provider = base.DataProviderFactory(is_network=False, created_by=self.creator) details = base.DataProviderDetailsFactory(data_provider=provider, created_by=self.creator) resp = self.client.post( reverse("provider:edit_non_network", kwargs={"pk": provider.pk}), data) self.assertEqual(resp.status_code, 302) provider.refresh_from_db() data["networks"] = [] self.check_object(provider, data) details.refresh_from_db() details_data.pop("provider_type") for attr in details_data.keys(): self.assertEqual(getattr(details, attr), data[attr]) self.assertEqual( getattr(details, "provider_type").pk, data["provider_type"]) self.logging()
def test_transition_changes_requested_feedback(self): self.erase_logging_file() self.login_creator() provider = base.DataProviderFactory( is_network=True, state="ready", name="Test provider", created_by=self.creator, ) provider_details = base.DataProviderDetailsFactory( data_provider=provider, state="ready", created_by=self.creator) items = [provider, provider_details] for item in items: self.assertEqual((getattr(item, "state")).name, "ready") self.client.force_login(self.other_user) self.client.post( reverse( "provider:transition", kwargs={ "source": "ready", "target": "changes", "pk": provider.pk }, ), {"feedback": "this is a feedback test"}, ) getattr(provider, "refresh_from_db")() self.assertEqual(provider.state, "changes") self.assertEqual(provider.feedback, "this is a feedback test")
def test_detail_provider_non_network(self): self.erase_logging_file() self.login_creator() provider = base.DataProviderFactory(is_network=False, created_by=self.creator) base.DataProviderDetailsFactory(data_provider=provider, created_by=self.creator) resp = self.client.get( reverse("provider:detail", kwargs={"pk": provider.pk})) self.assertEqual(resp.context["provider"], provider) self.logging()
def test_delete_data_provider_non_network_related_objects(self): self.login_creator() provider = base.DataProviderFactory(is_network=False, created_by=self.creator) data = base.DataFactory(created_by=self.creator) base.DataProviderDetailsFactory(data_provider=provider, created_by=self.creator) base.DataProviderRelationFactory(provider=provider, data=data, created_by=self.creator) self.client.post( reverse("provider:delete_non_network", kwargs={"pk": provider.pk})) self.check_objects_are_soft_deleted(models.DataProviderDetails) self.check_objects_are_soft_deleted(models.DataProviderRelation)
def test_edit_non_network_provider_fail_detail_form_validation(self): self.login_creator() self.erase_logging_file() data = self._DATA data["is_network"] = False provider = base.DataProviderFactory(is_network=False, created_by=self.creator) base.DataProviderDetailsFactory(data_provider=provider, created_by=self.creator) resp = self.client.post( reverse("provider:edit_non_network", kwargs={"pk": provider.pk}), data) detail_errors = { field: self.REQUIRED_ERROR for field in self.details_required_fields } self.assertDictEqual(resp.context["details"].errors, detail_errors)
def test_transition_existent_state_no_transition_non_network(self): self.login_creator() provider = base.DataProviderFactory(is_network=False, name='Test provider', created_by=self.creator) provider_details = base.DataProviderDetailsFactory( data_provider=provider, created_by=self.creator) items = ([provider, provider_details]) response = self.client.post( reverse('provider:transition', kwargs={ 'source': 'draft', 'target': 'valid', 'pk': provider.pk })) self.assertEqual(response.status_code, 404) for item in items: getattr(item, 'refresh_from_db')() self.assertEqual((getattr(item, 'state')).name, 'draft')
def test_transition_with_draft_data_non_network(self): self.erase_logging_file() self.login_creator() provider = base.DataProviderFactory(is_network=False, name='Test provider', created_by=self.creator) provider_details = base.DataProviderDetailsFactory( data_provider=provider, created_by=self.creator) items = ([provider, provider_details]) for item in items: self.assertEqual((getattr(item, 'state')).name, 'draft') self.client.force_login(self.creator) response = self.client.get( reverse('provider:transition', kwargs={ 'source': 'draft', 'target': 'ready', 'pk': provider.pk })) self.assertTrue(response.status_code, 200)
def test_transition_existent_state_no_transition_non_network(self): self.login_creator() provider = base.DataProviderFactory(is_network=False, name="Test provider", created_by=self.creator) provider_details = base.DataProviderDetailsFactory( data_provider=provider, created_by=self.creator) items = [provider, provider_details] response = self.client.post( reverse( "provider:transition", kwargs={ "source": "draft", "target": "valid", "pk": provider.pk }, )) self.assertEqual(response.status_code, 404) for item in items: getattr(item, "refresh_from_db")() self.assertEqual((getattr(item, "state")).name, "draft")
def test_transition_with_draft_data_non_network(self): self.erase_logging_file() self.login_creator() provider = base.DataProviderFactory(is_network=False, name="Test provider", created_by=self.creator) provider_details = base.DataProviderDetailsFactory( data_provider=provider, created_by=self.creator) items = [provider, provider_details] for item in items: self.assertEqual((getattr(item, "state")).name, "draft") self.client.force_login(self.creator) response = self.client.get( reverse( "provider:transition", kwargs={ "source": "draft", "target": "ready", "pk": provider.pk }, )) self.assertTrue(response.status_code, 200)
def test_transition_non_network(self): self.erase_logging_file() self.login_creator() provider = base.DataProviderFactory(is_network=False, name="Test provider", created_by=self.creator) provider_details = base.DataProviderDetailsFactory( data_provider=provider, created_by=self.creator) items = [provider, provider_details] for item in items: self.assertEqual((getattr(item, "state")).name, "draft") transitions = [ { "source": "draft", "target": "ready", "user": self.creator }, { "source": "ready", "target": "draft", "user": self.creator }, { "source": "draft", "target": "ready", "user": self.creator }, { "source": "ready", "target": "changes", "user": self.other_user }, { "source": "changes", "target": "draft", "user": self.creator }, { "source": "draft", "target": "ready", "user": self.creator }, { "source": "ready", "target": "valid", "user": self.other_user }, ] for transition in transitions: for item in items: self.assertEqual((getattr(item, "state")).name, transition["source"]) self.client.force_login(transition["user"]) response = self.client.post( reverse( "provider:transition", kwargs={ "source": transition["source"], "target": transition["target"], "pk": provider.pk, }, )) self.assertRedirects( response, reverse("provider:detail", kwargs={"pk": provider.pk})) for item in items: getattr(item, "refresh_from_db")() self.assertEqual((getattr(item, "state")).name, transition["target"]) self.logging(check_username=False)
def test_transition_non_network(self): self.erase_logging_file() self.login_creator() provider = base.DataProviderFactory(is_network=False, name='Test provider', created_by=self.creator) provider_details = base.DataProviderDetailsFactory( data_provider=provider, created_by=self.creator) items = ([provider, provider_details]) for item in items: self.assertEqual((getattr(item, 'state')).name, 'draft') transitions = [ { 'source': 'draft', 'target': 'ready', 'user': self.creator }, { 'source': 'ready', 'target': 'draft', 'user': self.creator }, { 'source': 'draft', 'target': 'ready', 'user': self.creator }, { 'source': 'ready', 'target': 'changes', 'user': self.other_user }, { 'source': 'changes', 'target': 'draft', 'user': self.creator }, { 'source': 'draft', 'target': 'ready', 'user': self.creator }, { 'source': 'ready', 'target': 'valid', 'user': self.other_user }, ] for transition in transitions: for item in items: self.assertEqual((getattr(item, 'state')).name, transition['source']) self.client.force_login(transition['user']) response = self.client.post( reverse('provider:transition', kwargs={ 'source': transition['source'], 'target': transition['target'], 'pk': provider.pk })) self.assertRedirects( response, reverse('provider:detail', kwargs={'pk': provider.pk})) for item in items: getattr(item, 'refresh_from_db')() self.assertEqual((getattr(item, 'state')).name, transition['target']) self.logging(check_username=False)