From b0dcd7dbb9cebde4803ef0677ff29682d51a904b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Gasser?= Date: Mon, 13 Mar 2023 22:39:59 +0100 Subject: [PATCH 1/2] Add integration tests for edit status and edit poll --- .../v410/V410StatusMethodsIntegrationTest.kt | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/bigbone/src/integrationTest/kotlin/social/bigbone/v410/V410StatusMethodsIntegrationTest.kt b/bigbone/src/integrationTest/kotlin/social/bigbone/v410/V410StatusMethodsIntegrationTest.kt index c025cdc2f..907509ec6 100644 --- a/bigbone/src/integrationTest/kotlin/social/bigbone/v410/V410StatusMethodsIntegrationTest.kt +++ b/bigbone/src/integrationTest/kotlin/social/bigbone/v410/V410StatusMethodsIntegrationTest.kt @@ -26,6 +26,7 @@ import social.bigbone.api.exception.BigBoneRequestException import java.time.Instant import java.time.ZoneId import java.time.temporal.ChronoUnit +import java.util.stream.Collectors /** * Integration tests for StatusMethods running on Mastodon 4.1.0. @@ -540,6 +541,119 @@ class V410StatusMethodsIntegrationTest { } } + @Nested + @DisplayName("editStatus tests") + internal inner class EditStatusTests { + @Test + fun `should edit status when mandatory params set`() { + // given + val user1Client = TestHelpers.getTrustAllClient(user1UserToken.accessToken) + val statusId = user1Client.statuses.postStatus(status = "This post will be edited soon").execute().id + + // when + val editedStatus = user1Client.statuses.editStatus(statusId, "This is the edited status text").execute() + + // then + assertEquals("

This is the edited status text

", editedStatus.content) + assertEquals(Status.Visibility.Public.value, editedStatus.visibility) + assertNull(editedStatus.inReplyToId) + assertEquals(0, editedStatus.mediaAttachments.size) + assertFalse(editedStatus.isSensitive) + assertEquals("", editedStatus.spoilerText) + assertEquals("en", editedStatus.language) + } + + @Test + fun `should edit status when all params set`() { + // given + val user1Client = TestHelpers.getTrustAllClient(user1UserToken.accessToken) + val statusId = user1Client.statuses.postStatus(status = "This post will be edited soon").execute().id + val uploadedMediaId1 = TestHelpers.uploadMediaFromResourcesFolder("castle-1280x853.jpg", "image/jpg", user1Client).id + val uploadedMediaId2 = TestHelpers.uploadMediaFromResourcesFolder("castle-1280x853.jpg", "image/jpg", user1Client).id + + // when + val editedStatus = user1Client.statuses.editStatus( + statusId = statusId, + status = "Das ist der bearbeitete Statustext", + mediaIds = listOf(uploadedMediaId1, uploadedMediaId2), + sensitive = true, + spoilerText = "Das ist der Spoilertext", + language = "de").execute() + + // then + assertEquals("

Das ist der bearbeitete Statustext

", editedStatus.content) + assertEquals(Status.Visibility.Public.value, editedStatus.visibility) + assertEquals(2, editedStatus.mediaAttachments.size) + assertTrue(editedStatus.isSensitive) + assertEquals("Das ist der Spoilertext", editedStatus.spoilerText) + assertEquals("de", editedStatus.language) + } + } + + @Nested + @DisplayName("editPoll tests") + internal inner class EditPollTests { + @Test + fun `should edit poll when mandatory params set`() { + // given + val user1Client = TestHelpers.getTrustAllClient(user1UserToken.accessToken) + val statusId = user1Client.statuses.postPoll( + status = "Do you think this test will pass?", + pollOptions = listOf("Yes", "No"), + pollExpiresIn = 300 + ).execute().id + + // when + val editedPoll = user1Client.statuses.editPoll( + statusId = statusId, + status = "Do you really think this test will pass?", + pollOptions = listOf("Yes", "No", "Eventually"), + pollExpiresIn = 500).execute() + + // then + assertEquals("

Do you really think this test will pass?

", editedPoll.content) + assertIterableEquals(listOf("Yes", "No", "Eventually"), editedPoll.poll!!.options.stream().map { it.title }.collect(Collectors.toList())) + assertEquals(Status.Visibility.Public.value, editedPoll.visibility) + assertEquals(0, editedPoll.mediaAttachments.size) + assertFalse(editedPoll.isSensitive) + assertEquals("", editedPoll.spoilerText) + assertEquals("en", editedPoll.language) + } + + @Test + fun `should edit poll when all params set`() { + // given + val user1Client = TestHelpers.getTrustAllClient(user1UserToken.accessToken) + val statusId = user1Client.statuses.postPoll( + status = "Do you think this test will pass?", + pollOptions = listOf("Yes", "No"), + pollExpiresIn = 300 + ).execute().id + + // when + val editedPoll = user1Client.statuses.editPoll( + statusId = statusId, + status = "Denkst Du wirklich dass dieser Test erfolgreich sein wird?", + pollOptions = listOf("Ja", "Nein", "Vielleicht"), + pollExpiresIn = 500, + pollMultiple = true, + pollHideTotals = true, + sensitive = true, + spoilerText = "Das ist der Spoilertext", + language = "de").execute() + + // then + assertEquals("

Denkst Du wirklich dass dieser Test erfolgreich sein wird?

", editedPoll.content) + assertIterableEquals(listOf("Ja", "Nein", "Vielleicht"), editedPoll.poll!!.options.stream().map { it.title }.collect(Collectors.toList())) + assertEquals(Status.Visibility.Public.value, editedPoll.visibility) + assertEquals(0, editedPoll.mediaAttachments.size) + assertTrue(editedPoll.poll!!.multiple) + assertTrue(editedPoll.isSensitive) + assertEquals("Das ist der Spoilertext", editedPoll.spoilerText) + assertEquals("de", editedPoll.language) + } + } + @Nested @DisplayName("getContext tests") internal inner class GetContextTests { From 3aa0e857aca39331b7e69a3607f2577b3dee7b52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Gasser?= Date: Mon, 20 Mar 2023 08:24:27 +0100 Subject: [PATCH 2/2] Add test to verify that poll is not reset when status is edited --- .../v410/V410StatusMethodsIntegrationTest.kt | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/bigbone/src/integrationTest/kotlin/social/bigbone/v410/V410StatusMethodsIntegrationTest.kt b/bigbone/src/integrationTest/kotlin/social/bigbone/v410/V410StatusMethodsIntegrationTest.kt index 907509ec6..58fc1c78f 100644 --- a/bigbone/src/integrationTest/kotlin/social/bigbone/v410/V410StatusMethodsIntegrationTest.kt +++ b/bigbone/src/integrationTest/kotlin/social/bigbone/v410/V410StatusMethodsIntegrationTest.kt @@ -588,6 +588,34 @@ class V410StatusMethodsIntegrationTest { assertEquals("Das ist der Spoilertext", editedStatus.spoilerText) assertEquals("de", editedStatus.language) } + + @Test + fun `should not reset poll if status is edited`() { + // given + val user1Client = TestHelpers.getTrustAllClient(user1UserToken.accessToken) + val statusId = user1Client.statuses.postPoll( + status = "Do you think this test will pass?", + pollOptions = listOf("Yes", "No"), + pollExpiresIn = 300 + ).execute().id + + // when + val editedPoll = user1Client.statuses.editStatus( + statusId = statusId, + status = "Do you really think this test will pass?", + ).execute() + + val editedPoll2 = user1Client.statuses.getStatus(statusId).execute() + + // then + assertEquals("

Do you really think this test will pass?

", editedPoll2.content) + assertIterableEquals(listOf("Yes", "No"), editedPoll2.poll!!.options.stream().map { it.title }.collect(Collectors.toList())) + assertEquals(Status.Visibility.Public.value, editedPoll2.visibility) + assertEquals(0, editedPoll2.mediaAttachments.size) + assertFalse(editedPoll2.isSensitive) + assertEquals("", editedPoll2.spoilerText) + assertEquals("en", editedPoll2.language) + } } @Nested