def test_get_filtered_list_task_assert_return_list(self): """ Test if the view return a list of filtered task """ response = self.client.get(self.url + "?page__codex__slug=" + self.codex1.slug) self.assertEqual(len(response.data), 1) self.assertEqual(response.data[0]["id"], self.task1.id) self.assertEqual(response.data[0]["page"], self.page1.id) self.assertEqual(response.data[0]["text"], self.task1.text) self.assertEqual(response.data[0]["is_achieved"], self.task1.is_achieved) self.assertEqual( response.data[0]["initial_hash"], java_string_hashcode(self.task1.text), ) self.assertEqual( response.data[0]["achieved_date"], self.task1.achieved_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data[0]["creation_date"], self.task1.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data[0]["update_date"], self.task1.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), )
def test_get_list_information_not_codex_author_return_only_self_codex( self): """ Test if a user can list information of other user """ other_user_name = "oz" self.connect_user(other_user_name) codex3 = self.empty_codex = Codex.objects.create( title="Test Codex 3", author=self.users[other_user_name], description="Description 3") information3 = Information.objects.create(text="Test Information 3", codex=codex3) response = self.client.get(self.url) self.assertEqual(len(response.data), 1) self.assertEqual(response.data[0]["id"], information3.id) self.assertEqual(response.data[0]["codex"], codex3.id) self.assertEqual(response.data[0]["text"], information3.text) self.assertEqual(response.data[0]["initial_hash"], java_string_hashcode(information3.text)) self.assertEqual( response.data[0]["creation_date"], information3.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data[0]["update_date"], information3.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), )
def test_get_list_note_not_codex_author_return_only_self_codex(self): """ Test if a user can list note of other user """ other_user_name = "oz" self.connect_user(other_user_name) codex3 = Codex.objects.create(title="Test Codex 3", author=self.users[other_user_name], description="Description 3") page3 = Page.objects.create(codex=codex3) note3 = Note.objects.create(page=page3, text="Test Note 3") response = self.client.get(self.url) self.assertEqual(len(response.data), 1) self.assertEqual(response.data[0]["id"], note3.id) self.assertEqual(response.data[0]["page"], page3.id) self.assertEqual(response.data[0]["text"], note3.text) self.assertEqual( response.data[0]["initial_hash"], java_string_hashcode(note3.text), ) self.assertEqual( response.data[0]["creation_date"], note3.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data[0]["update_date"], note3.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), )
def validate_modification_hash(self, value): initial_hash = java_string_hashcode( getattr(self.instance, self.Meta.hash_field) ) if initial_hash != value: raise serializers.ValidationError( gettext( "The {resource_name} have been modified since the last modification attempt." ).format(resource_name=self.Meta.model._meta.object_name) ) return value
def test_post_note_assert_return_note(self): """ Test if the view return an note """ response = self.client.post(self.url, self.data) self.assertEqual(len(response.data), 6) self.assertEqual(response.data["id"], 2) self.assertEqual(response.data["page"], 2) self.assertEqual(response.data["text"], self.data["text"]) self.assertEqual(response.data["initial_hash"], java_string_hashcode(self.data["text"])) self.assertIsNotNone(response.data["creation_date"]) self.assertIsNotNone(response.data["update_date"])
def test_get_list_note_assert_return_list(self): """ Test if the view return a list of note """ response = self.client.get(self.url) self.assertEqual(len(response.data), 2) self.assertEqual(response.data[0]["id"], self.note1.id) self.assertEqual(response.data[0]["page"], self.page1.id) self.assertEqual(response.data[0]["text"], self.note1.text) self.assertEqual( response.data[0]["initial_hash"], java_string_hashcode(self.note1.text), ) self.assertEqual( response.data[0]["creation_date"], self.note1.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data[0]["update_date"], self.note1.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual(response.data[1]["id"], self.note2.id) self.assertEqual(response.data[1]["page"], self.page2.id) self.assertEqual(response.data[1]["text"], self.note2.text) self.assertEqual( response.data[1]["initial_hash"], java_string_hashcode(self.note2.text), ) self.assertEqual( response.data[1]["creation_date"], self.note2.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data[1]["update_date"], self.note2.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), )
def test_put_note_assert_return_note(self): """ Test if the view return an note """ response = self.client.put(self.url, self.data) self.assertEqual(len(response.data), 6) self.assertEqual(response.data["id"], self.note1.id) self.assertEqual(response.data["page"], self.page1.id) self.assertEqual(response.data["text"], self.data["text"]) self.assertEqual(response.data["initial_hash"], java_string_hashcode(self.data["text"])) self.assertEqual( response.data["creation_date"], self.note1.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ")) self.assertIsNotNone(response.data["update_date"])
def setUp(self): self.connect_default_user() self.codex1 = Codex.objects.create(title="Test Codex 1", author=self.default_user, description="Description 1") self.page1 = Page.objects.create(codex=self.codex1) self.note1 = Note.objects.create(text="Test note 1", page=self.page1) self.codex2 = Codex.objects.create(title="Test Codex 2", author=self.default_user, description="Description 2") self.page2 = Page.objects.create(codex=self.codex2) self.note2 = Note.objects.create(text="Test note 2", page=self.page2) self.url = reverse("note-detail", args=[1]) self.data = { "text": "Test note 1 updated", "modification_hash": java_string_hashcode(self.note1.text), }
def setUp(self): self.connect_default_user() self.codex1 = Codex.objects.create(title="Test Codex 1", author=self.default_user, description="Description 1") self.information1 = Information.objects.create( text="Test Information 1", codex=self.codex1) self.codex2 = Codex.objects.create(title="Test Codex 2", author=self.default_user, description="Description 2") self.information2 = Information.objects.create( text="Test Information 2", codex=self.codex2) self.url = reverse("information-detail", args=[1]) self.data = { "text": "Test Information 1 updated", "modification_hash": java_string_hashcode(self.information1.text), }
def test_post_task_assert_return_task(self): """ Test if the view return a task """ response = self.client.post(self.url, self.data) self.assertEqual(len(response.data), 8) self.assertEqual(response.data["id"], 2) self.assertEqual(response.data["page"], 2) self.assertEqual(response.data["text"], self.data["text"]) self.assertEqual(str(response.data["is_achieved"]), self.data["is_achieved"]) self.assertEqual( response.data["initial_hash"], java_string_hashcode(self.data["text"]), ) self.assertIsNotNone(response.data["achieved_date"]) self.assertIsNotNone(response.data["creation_date"]) self.assertIsNotNone(response.data["update_date"], )
def setUp(self): self.connect_default_user() self.codex1 = Codex.objects.create(title="Test Codex 1", author=self.default_user, description="Description 1") self.page1 = Page.objects.create(codex=self.codex1) self.task1 = Task.objects.create(text="Test task 1", page=self.page1) self.codex2 = Codex.objects.create(title="Test Codex 2", author=self.default_user, description="Description 2") self.page2 = Page.objects.create(codex=self.codex2) self.task2 = Task.objects.create(text="Test task 2", page=self.page2) self.url = reverse("task-detail", args=[1]) self.data = { "text": "Test task 1 updated", "is_achieved": "True", "modification_hash": java_string_hashcode(self.task1.text), }
def test_get_detail_information_assert_return_information(self): """ Test if the view return a unique of codex information """ response = self.client.get(self.url) self.assertEqual(len(response.data), 6) self.assertEqual(response.data["id"], self.information1.id) self.assertEqual(response.data["codex"], self.codex.id) self.assertEqual(response.data["text"], self.information1.text) self.assertEqual(response.data["initial_hash"], java_string_hashcode(self.information1.text)) self.assertEqual( response.data["creation_date"], self.information1.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data["update_date"], self.information1.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), )
def test_get_detail_note_assert_return_codex(self): """ Test if the view return a unique note """ response = self.client.get(self.url) self.assertEqual(len(response.data), 6) self.assertEqual(response.data["id"], self.note.id) self.assertEqual(response.data["page"], self.page.id) self.assertEqual(response.data["text"], self.note.text) self.assertEqual( response.data["initial_hash"], java_string_hashcode(self.note.text), ) self.assertEqual( response.data["creation_date"], self.note.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data["update_date"], self.note.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), )
def test_get_filtered_list_information_assert_return_list(self): """ Test if the view return a list of filtered codex information """ response = self.client.get(self.url + "?codex__slug=" + self.codex1.slug) self.assertEqual(len(response.data), 1) self.assertEqual(response.data[0]["id"], self.information1.id) self.assertEqual(response.data[0]["codex"], self.codex1.id) self.assertEqual(response.data[0]["text"], self.information1.text) self.assertEqual( response.data[0]["initial_hash"], java_string_hashcode(self.information1.text), ) self.assertEqual( response.data[0]["creation_date"], self.information1.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data[0]["update_date"], self.information1.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), )
def test_get_detail_task_assert_return_task(self): """ Test if the view return a unique task """ response = self.client.get(self.url) self.assertEqual(len(response.data), 8) self.assertEqual(response.data["id"], self.task.id) self.assertEqual(response.data["page"], self.page.id) self.assertEqual(response.data["text"], self.task.text) self.assertEqual(response.data["is_achieved"], self.task.is_achieved) self.assertEqual( response.data["initial_hash"], java_string_hashcode(self.task.text), ) self.assertIsNone(response.data["achieved_date"]) self.assertEqual( response.data["creation_date"], self.task.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data["update_date"], self.task.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), )
def test_get_list_task_assert_return_list(self): """ Test if the view return a list of task """ response = self.client.get(self.url) self.assertEqual(len(response.data), 3) self.assertEqual(response.data[0]["id"], self.task1.id) self.assertEqual(response.data[0]["page"], self.page1.id) self.assertEqual(response.data[0]["text"], self.task1.text) self.assertEqual(response.data[0]["is_achieved"], self.task1.is_achieved) self.assertEqual( response.data[0]["initial_hash"], java_string_hashcode(self.task1.text), ) self.assertEqual( response.data[0]["achieved_date"], self.task1.achieved_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data[0]["creation_date"], self.task1.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data[0]["update_date"], self.task1.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual(response.data[1]["id"], self.task2.id) self.assertEqual(response.data[1]["page"], self.page2.id) self.assertEqual(response.data[1]["text"], self.task2.text) self.assertEqual(response.data[1]["is_achieved"], self.task2.is_achieved) self.assertEqual( response.data[1]["initial_hash"], java_string_hashcode(self.task2.text), ) self.assertIsNone(response.data[1]["achieved_date"]) self.assertEqual( response.data[1]["creation_date"], self.task2.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data[1]["update_date"], self.task2.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual(response.data[2]["id"], self.task3.id) self.assertEqual(response.data[2]["page"], self.page2.id) self.assertEqual(response.data[2]["text"], self.task3.text) self.assertEqual(response.data[2]["is_achieved"], self.task3.is_achieved) self.assertEqual( response.data[2]["initial_hash"], java_string_hashcode(self.task3.text), ) self.assertIsNone(response.data[2]["achieved_date"]) self.assertEqual( response.data[2]["creation_date"], self.task3.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual( response.data[2]["update_date"], self.task3.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), )
def test_get_list_page_assert_return_list(self): """ Test if the view return a list of page """ response = self.client.get(self.url) self.assertEqual(len(response.data), 2) self.assertEqual(response.data[0]["id"], self.page1.id) self.assertEqual(response.data[0]["codex"], self.codex1.id) self.assertGreaterEqual( self.page1.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), response.data[0]["creation_date"], ) self.assertGreaterEqual( self.page1.date.strftime("%Y-%m-%d"), response.data[0]["date"], ) self.assertGreaterEqual( response.data[0]["nested_update_date"], self.page1.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), ) self.assertEqual(response.data[0]["note"]["id"], self.note1.id) self.assertEqual(response.data[0]["note"]["page"], self.page1.id) self.assertEqual(response.data[0]["note"]["text"], self.note1.text) self.assertEqual( response.data[0]["note"]["initial_hash"], java_string_hashcode(self.note1.text), ) self.assertGreaterEqual( self.note1.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), response.data[0]["note"]["creation_date"], ) self.assertGreaterEqual( self.note1.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), response.data[0]["note"]["update_date"], ) self.assertEqual(len(response.data[0]["tasks"]), 2) self.assertEqual(response.data[0]["tasks"][0]["id"], self.task1.id) self.assertEqual(response.data[0]["tasks"][0]["page"], self.page1.id) self.assertEqual(response.data[0]["tasks"][0]["text"], self.task1.text) self.assertEqual(response.data[0]["tasks"][0]["is_achieved"], self.task1.is_achieved) self.assertEqual( response.data[0]["tasks"][0]["initial_hash"], java_string_hashcode(self.task1.text), ) self.assertIsNone(response.data[0]["tasks"][0]["achieved_date"]) self.assertGreaterEqual( self.task1.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), response.data[0]["tasks"][0]["creation_date"], ) self.assertGreaterEqual( self.task1.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), response.data[0]["tasks"][0]["update_date"], ) self.assertEqual(response.data[0]["tasks"][1]["id"], self.task2.id) self.assertEqual(response.data[0]["tasks"][1]["page"], self.page1.id) self.assertEqual(response.data[0]["tasks"][1]["text"], self.task2.text) self.assertEqual(response.data[0]["tasks"][1]["is_achieved"], self.task2.is_achieved) self.assertEqual( response.data[0]["tasks"][1]["initial_hash"], java_string_hashcode(self.task2.text), ) self.assertIsNone(response.data[0]["tasks"][1]["achieved_date"]) self.assertGreaterEqual( self.task2.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), response.data[0]["tasks"][1]["creation_date"], ) self.assertEqual( self.task2.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), response.data[0]["tasks"][1]["update_date"], ) self.assertEqual(response.data[1]["id"], self.page2.id) self.assertEqual(response.data[1]["codex"], self.codex2.id) self.assertGreaterEqual( self.page2.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), response.data[1]["creation_date"], ) self.assertGreaterEqual( self.page2.date.strftime("%Y-%m-%d"), response.data[1]["date"], ) self.assertGreaterEqual( self.page2.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), response.data[1]["nested_update_date"], ) self.assertEqual(response.data[1]["note"]["id"], self.note2.id) self.assertEqual(response.data[1]["note"]["page"], self.page2.id) self.assertEqual(response.data[1]["note"]["text"], self.note2.text) self.assertEqual( response.data[1]["note"]["initial_hash"], java_string_hashcode(self.note2.text), ) self.assertGreaterEqual( self.note2.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), response.data[1]["note"]["creation_date"], ) self.assertGreaterEqual( self.note2.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), response.data[1]["note"]["update_date"], ) self.assertEqual(len(response.data[1]["tasks"]), 1) self.assertEqual(response.data[1]["tasks"][0]["id"], self.task3.id) self.assertEqual(response.data[1]["tasks"][0]["page"], self.page2.id) self.assertEqual(response.data[1]["tasks"][0]["text"], self.task3.text) self.assertEqual(response.data[1]["tasks"][0]["is_achieved"], self.task3.is_achieved) self.assertEqual( response.data[1]["tasks"][0]["initial_hash"], java_string_hashcode(self.task3.text), ) self.assertIsNone(response.data[1]["tasks"][0]["achieved_date"]) self.assertGreaterEqual( self.task3.creation_date.strftime("%Y-%m-%dT%H:%M:%SZ"), response.data[1]["tasks"][0]["creation_date"], ) self.assertGreaterEqual( self.task3.update_date.strftime("%Y-%m-%dT%H:%M:%SZ"), response.data[1]["tasks"][0]["update_date"], )
def get_initial_hash(self, obj): return java_string_hashcode(getattr(obj, self.Meta.hash_field))