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+ }
0 commit comments