Skip to content

Commit 581be02

Browse files
authored
Kotlin integration tests for /templates (#767)
* Add `/templates` related errors and their integration tests * Kotlin integration tests for `/templates`
1 parent 0472bf8 commit 581be02

File tree

2 files changed

+143
-1
lines changed

2 files changed

+143
-1
lines changed
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
package rs.wordpress.api.kotlin
2+
3+
import kotlinx.coroutines.test.runTest
4+
import org.junit.jupiter.api.Test
5+
import uniffi.wp_api.TemplateCreateParams
6+
import uniffi.wp_api.TemplateListParams
7+
import uniffi.wp_api.TemplateUpdateParams
8+
import uniffi.wp_api.SparseTemplateFieldWithEditContext
9+
import uniffi.wp_api.SparseTemplateTitle
10+
import uniffi.wp_api.SparseTemplateTitleWrapper
11+
import uniffi.wp_api.WpErrorCode
12+
import kotlin.test.assertEquals
13+
import kotlin.test.assertNull
14+
15+
private const val TEMPLATE_TWENTY_TWENTY_FOUR_SINGLE_SLUG: String = "single"
16+
private const val TEMPLATE_TWENTY_TWENTY_FOUR_SINGLE: String =
17+
"twentytwentyfour//$TEMPLATE_TWENTY_TWENTY_FOUR_SINGLE_SLUG"
18+
19+
class TemplatesEndpointTest {
20+
private val client = defaultApiClient()
21+
22+
@Test
23+
fun testTemplateListRequest() = runTest {
24+
val templateList = client.request { requestBuilder ->
25+
requestBuilder.templates().listWithEditContext(params = TemplateListParams())
26+
}.assertSuccessAndRetrieveData().data
27+
assert(templateList.isNotEmpty())
28+
}
29+
30+
@Test
31+
fun testFilterTemplateListRequest() = runTest {
32+
val templateList = client.request { requestBuilder ->
33+
requestBuilder.templates().filterListWithEditContext(
34+
params = TemplateListParams(),
35+
fields = listOf(
36+
SparseTemplateFieldWithEditContext.AUTHOR,
37+
SparseTemplateFieldWithEditContext.SLUG
38+
)
39+
)
40+
}.assertSuccessAndRetrieveData().data
41+
assert(templateList.isNotEmpty())
42+
assertNull(templateList.first().description)
43+
}
44+
45+
@Test
46+
fun testRetrieveTemplateRequest() = runTest {
47+
val template = client.request { requestBuilder ->
48+
requestBuilder.templates().retrieveWithEditContext(TEMPLATE_TWENTY_TWENTY_FOUR_SINGLE)
49+
}.assertSuccessAndRetrieveData().data
50+
assertEquals(TEMPLATE_TWENTY_TWENTY_FOUR_SINGLE_SLUG, template.slug)
51+
}
52+
53+
@Test
54+
fun testFilterRetrieveTemplateRequest() = runTest {
55+
val template = client.request { requestBuilder ->
56+
requestBuilder.templates().filterRetrieveWithEditContext(
57+
TEMPLATE_TWENTY_TWENTY_FOUR_SINGLE,
58+
fields = listOf(
59+
SparseTemplateFieldWithEditContext.AUTHOR,
60+
SparseTemplateFieldWithEditContext.SLUG
61+
)
62+
)
63+
}.assertSuccessAndRetrieveData().data
64+
assertEquals(TEMPLATE_TWENTY_TWENTY_FOUR_SINGLE_SLUG, template.slug)
65+
assertNull(template.description)
66+
}
67+
68+
@Test
69+
fun createTemplateRequest() = runTest {
70+
val createdTemplate = client.request { requestBuilder ->
71+
requestBuilder.templates()
72+
.create(TemplateCreateParams(slug = "created_slug", title = "new_title"))
73+
}.assertSuccessAndRetrieveData().data
74+
assertEquals("created_slug", createdTemplate.slug)
75+
assertEquals(
76+
expected = SparseTemplateTitleWrapper.Object(
77+
SparseTemplateTitle(
78+
raw = "new_title",
79+
rendered = "new_title"
80+
)
81+
),
82+
actual = createdTemplate.title
83+
)
84+
restoreTestServer()
85+
}
86+
87+
@Test
88+
fun deleteTemplateRequest() = runTest {
89+
val deletedTemplate = client.request { requestBuilder ->
90+
requestBuilder.templates()
91+
.delete(templateId = TestCredentials.INSTANCE.integrationTestCustomTemplateId)
92+
}.assertSuccessAndRetrieveData().data
93+
assert(deletedTemplate.deleted)
94+
restoreTestServer()
95+
}
96+
97+
@Test
98+
fun updateTemplateRequest() = runTest {
99+
val updatedTemplate = client.request { requestBuilder ->
100+
requestBuilder.templates()
101+
.update(
102+
templateId = TestCredentials.INSTANCE.integrationTestCustomTemplateId,
103+
TemplateUpdateParams(
104+
description = "new_description",
105+
)
106+
)
107+
}.assertSuccessAndRetrieveData().data
108+
assertEquals("new_description", updatedTemplate.description)
109+
restoreTestServer()
110+
}
111+
112+
@Test
113+
fun testDeleteTemplateErrInvalidTemplate() = runTest {
114+
val result =
115+
client.request { requestBuilder ->
116+
requestBuilder.templates().delete(TEMPLATE_TWENTY_TWENTY_FOUR_SINGLE)
117+
}
118+
assert(result.wpErrorCode() is WpErrorCode.InvalidTemplate)
119+
}
120+
}

native/kotlin/api/kotlin/src/integrationTest/kotlin/TestCredentials.kt

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,30 @@ data class TestCredentials(
2424
val subscriberPassword: String,
2525
@SerialName("subscriber_password_uuid")
2626
val subscriberPasswordUuid: String,
27+
@SerialName("author_username")
28+
val authorUsername: String,
29+
@SerialName("author_password")
30+
val authorPassword: String,
31+
@SerialName("password_protected_post_id")
32+
val passwordProtectedPostId: Long,
33+
@SerialName("password_protected_post_password")
34+
val passwordProtectedPostPassword: String,
35+
@SerialName("password_protected_post_title")
36+
val passwordProtectedPostTitle: String,
37+
@SerialName("password_protected_comment_id")
38+
val passwordProtectedCommentId: Long,
39+
@SerialName("password_protected_comment_author")
40+
val passwordProtectedCommentAuthor: String,
41+
@SerialName("trashed_post_id")
42+
val trashedPostId: Long,
2743
@SerialName("first_post_date_gmt")
28-
val firstPostDateGmt: String
44+
val firstPostDateGmt: String,
45+
@SerialName("wordpress_core_version")
46+
val wordpressCoreVersion: String,
47+
@SerialName("integration_test_custom_template_id")
48+
val integrationTestCustomTemplateId: String,
49+
@SerialName("revisioned_post_id")
50+
val revisionedPostId: Long,
2951
) {
3052
companion object {
3153
private val json by lazy {

0 commit comments

Comments
 (0)