Skip to content

Commit b8c47fe

Browse files
author
Martin Kudlej
committed
add publishing
1 parent 64504be commit b8c47fe

File tree

3 files changed

+82
-16
lines changed

3 files changed

+82
-16
lines changed

tests/integration/test_integration_cms.py

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# Files
66
def test_file_list(api, cms_file):
77
""" List all files. """
8-
assert len(list(api.cms_files.list())) >= 1
8+
assert len(api.cms_files.list()) >= 1
99

1010

1111
def test_file_can_be_created(cms_file_data, cms_file):
@@ -59,7 +59,7 @@ def test_builtin_section_can_be_read(api):
5959

6060
def test_section_list(api, cms_section):
6161
""" List all sections. """
62-
assert len(list(api.cms_sections.list())) >= 1
62+
assert len(api.cms_sections.list()) >= 1
6363

6464

6565
def test_section_can_be_created(cms_section_params, cms_section):
@@ -91,7 +91,7 @@ def test_section_can_be_updated(cms_section_params, cms_section):
9191

9292
def test_builtin_partials_list(api):
9393
""" List all sections. """
94-
assert len(list(api.cms_builtin_partials.list())) >= 1
94+
assert len(api.cms_builtin_partials.list()) >= 1
9595

9696

9797
def test_builtin_partial_can_be_read(api):
@@ -105,7 +105,7 @@ def test_builtin_partial_can_be_read(api):
105105

106106
def test_partial_list(api, cms_partial):
107107
""" List all user defined partials. """
108-
assert len(list(api.cms_partials.list())) >= 1
108+
assert len(api.cms_partials.list()) >= 1
109109

110110

111111
def test_partial_can_be_created(cms_partial_params, cms_partial):
@@ -131,15 +131,24 @@ def test_partial_can_be_updated(cms_partial_params, cms_partial):
131131
assert updated['draft'] == updated_draft
132132
assert cms_partial['draft'] == updated_draft
133133

134-
# TODO template publishing
134+
135+
def test_partial_publish(cms_partial):
136+
""" Test publishing of partials. """
137+
assert cms_partial.entity.get('published', None) is None
138+
draft = cms_partial['draft']
139+
cms_partial = cms_partial.publish()
140+
# assert draft == cms_partial['draft'] bug
141+
# assert cms_partial['published'] == cms_partial['draft'] bug
142+
assert draft == cms_partial['published']
143+
135144

136145
# Pages
137146
# builtin
138147

139148

140149
def test_builtin_pages_list(api):
141150
""" List all sections. """
142-
assert len(list(api.cms_builtin_pages.list())) >= 1
151+
assert len(api.cms_builtin_pages.list()) >= 1
143152

144153

145154
def test_builtin_page_can_be_read(api):
@@ -154,7 +163,7 @@ def test_builtin_page_can_be_read(api):
154163

155164
def test_page_list(api, cms_page):
156165
""" List all user defined pages. """
157-
assert len(list(api.cms_pages.list())) >= 1
166+
assert len(api.cms_pages.list()) >= 1
158167

159168

160169
def test_page_can_be_created(cms_page_params, cms_page):
@@ -181,12 +190,22 @@ def test_page_can_be_updated(cms_page_params, cms_page):
181190
assert cms_page['draft'] == updated_draft
182191

183192

193+
def test_page_publish(cms_page):
194+
""" Test publishing of pages. """
195+
assert cms_page.entity.get('published', None) is None
196+
draft = cms_page['draft']
197+
cms_page = cms_page.publish()
198+
# assert draft == cms_page['draft'] bug
199+
# assert cms_page['published'] == cms_page['draft'] bug
200+
assert draft == cms_page['published']
201+
202+
184203
# Layouts
185204

186205

187206
def test_layout_list(api, cms_layout):
188207
""" List all user defined layouts. """
189-
assert len(list(api.cms_layouts.list())) >= 1
208+
assert len(api.cms_layouts.list()) >= 1
190209

191210

192211
def test_layout_can_be_created(cms_layout_params, cms_layout):
@@ -211,3 +230,13 @@ def test_layout_can_be_updated(cms_layout_params, cms_layout):
211230
updated = cms_layout.read()
212231
assert updated['draft'] == updated_draft
213232
assert cms_layout['draft'] == updated_draft
233+
234+
235+
def test_layout_publish(cms_layout):
236+
""" Test publishing of layouts. """
237+
assert cms_layout.entity.get('published', None) is None
238+
draft = cms_layout['draft']
239+
cms_layout = cms_layout.publish()
240+
# assert draft == cms_layout['draft'] bug
241+
# assert cms_layout['published'] == cms_layout['draft'] bug
242+
assert draft == cms_layout['published']

threescale_api/client.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,13 @@ def __init__(self, url: str, token: str,
5252
resources.FieldsDefinitions(self, instance_klass=resources.FieldsDefinition)
5353
self._cms_files = resources.CmsFiles(self, instance_klass=resources.CmsFile)
5454
self._cms_sections = resources.CmsSections(self, instance_klass=resources.CmsSection)
55-
self._cms_builtin_sections = resources.CmsBuiltinSections(self, instance_klass=resources.CmsSection)
55+
self._cms_builtin_sections =\
56+
resources.CmsBuiltinSections(self, instance_klass=resources.CmsSection)
5657
self._cms_pages = resources.CmsPages(self, instance_klass=resources.CmsPage)
5758
self._cms_builtin_pages = resources.CmsBuiltinPages(self, instance_klass=resources.CmsPage)
5859
self._cms_layouts = resources.CmsLayouts(self, instance_klass=resources.CmsLayout)
59-
self._cms_builtin_partials = resources.CmsBuiltinPartials(self, instance_klass=resources.CmsPartial)
60+
self._cms_builtin_partials =\
61+
resources.CmsBuiltinPartials(self, instance_klass=resources.CmsPartial)
6062
self._cms_partials = resources.CmsPartials(self, instance_klass=resources.CmsPartial)
6163

6264
if wait >= 0:
@@ -282,11 +284,11 @@ def cms_pages(self) -> resources.CmsPages:
282284
@property
283285
def cms_builtin_pages(self) -> resources.CmsBuiltinPages:
284286
return self._cms_builtin_pages
285-
287+
286288
@property
287289
def cms_layouts(self) -> resources.CmsLayouts:
288290
return self._cms_layouts
289-
291+
290292
@property
291293
def cms_partials(self) -> resources.CmsPartials:
292294
return self._cms_partials

threescale_api/resources.py

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -915,6 +915,7 @@ def url(self) -> str:
915915

916916

917917
class CmsClient(DefaultClient):
918+
""" Client for all cms api endpoints. """
918919
def __init__(self, *args, **kwargs):
919920
super().__init__(*args, **kwargs)
920921

@@ -946,6 +947,7 @@ def __iter__(self):
946947

947948

948949
class CmsFiles(CmsClient):
950+
""" Client for files. """
949951
def __init__(self, *args, entity_name='file', entity_collection='files', **kwargs):
950952
super().__init__(*args, entity_name=entity_name,
951953
entity_collection=entity_collection, **kwargs)
@@ -956,6 +958,7 @@ def url(self) -> str:
956958

957959

958960
class CmsSections(CmsClient):
961+
""" Client for sections. """
959962
def __init__(self, *args, entity_name='section', entity_collection='sections', **kwargs):
960963
super().__init__(*args, entity_name=entity_name,
961964
entity_collection=entity_collection, **kwargs)
@@ -964,42 +967,59 @@ def __init__(self, *args, entity_name='section', entity_collection='sections', *
964967
def url(self) -> str:
965968
return self.threescale_client.admin_api_url + '/cms/sections'
966969

970+
967971
class CmsBuiltinSections(CmsSections):
968-
def __init__(self, *args, entity_name='builtin_section', entity_collection='sections', **kwargs):
972+
""" Client for builtin sections. """
973+
def __init__(self, *args, entity_name='builtin_section', entity_collection='sections',
974+
**kwargs):
969975
super().__init__(*args, entity_name=entity_name,
970976
entity_collection=entity_collection, **kwargs)
971977

972978

973979
class CmsTemplates(CmsClient):
980+
""" Client for templates. """
974981
def __init__(self, *args, entity_collection='templates', **kwargs):
975982
super().__init__(*args, entity_collection=entity_collection, **kwargs)
976983

977984
@property
978985
def url(self) -> str:
979986
return self.threescale_client.admin_api_url + '/cms/templates'
980987

988+
def publish(self, entity_id, **kwargs):
989+
""" Publish template with entity_id """
990+
log.info("[PUBLISH] " + f"{entity_id}")
991+
url = self._entity_url(entity_id) + '/publish'
992+
response = self.rest.put(url=url, **kwargs)
993+
instance = self._create_instance(response=response)
994+
return instance
995+
981996

982997
class CmsPages(CmsTemplates):
998+
""" Client for pages """
983999
def __init__(self, *args, entity_name='page', **kwargs):
9841000
super().__init__(*args, entity_name=entity_name, **kwargs)
9851001

9861002

9871003
class CmsBuiltinPages(CmsTemplates):
1004+
""" Client for builtin pages. """
9881005
def __init__(self, *args, entity_name='builtin_page', **kwargs):
9891006
super().__init__(*args, entity_name=entity_name, **kwargs)
9901007

9911008

9921009
class CmsLayouts(CmsTemplates):
1010+
""" Client for layouts """
9931011
def __init__(self, *args, entity_name='layout', **kwargs):
9941012
super().__init__(*args, entity_name=entity_name, **kwargs)
9951013

9961014

9971015
class CmsPartials(CmsTemplates):
1016+
""" Client for partials """
9981017
def __init__(self, *args, entity_name='partial', **kwargs):
9991018
super().__init__(*args, entity_name=entity_name, **kwargs)
10001019

10011020

10021021
class CmsBuiltinPartials(CmsTemplates):
1022+
""" Client for builtin partials """
10031023
def __init__(self, *args, entity_name='builtin_partial', **kwargs):
10041024
super().__init__(*args, entity_name=entity_name, **kwargs)
10051025
# Resources
@@ -1554,25 +1574,40 @@ def __init__(self, entity_name='name', **kwargs):
15541574

15551575

15561576
class CmsFile(DefaultResource):
1577+
""" Resource for file """
15571578
def __init__(self, entity_name='path', **kwargs):
15581579
super().__init__(entity_name=entity_name, **kwargs)
15591580

15601581

15611582
class CmsSection(DefaultResource):
1583+
""" Resource for section. """
15621584
def __init__(self, entity_name='id', **kwargs):
15631585
super().__init__(entity_name=entity_name, **kwargs)
15641586

15651587

1566-
class CmsPage(DefaultResource):
1588+
class CmsTemplate(DefaultResource):
1589+
""" Resource for templates """
1590+
def __init__(self, *args, **kwargs):
1591+
super().__init__(*args, **kwargs)
1592+
1593+
def publish(self, **kwargs):
1594+
""" Publish template resource """
1595+
return self.client.publish(entity_id=self.entity_id, **kwargs)
1596+
1597+
1598+
class CmsPage(CmsTemplate):
1599+
""" Resource for page """
15671600
def __init__(self, entity_name='system_name', **kwargs):
15681601
super().__init__(entity_name=entity_name, **kwargs)
15691602

15701603

1571-
class CmsLayout(DefaultResource):
1604+
class CmsLayout(CmsTemplate):
1605+
""" Resource for layout """
15721606
def __init__(self, entity_name='system_name', **kwargs):
15731607
super().__init__(entity_name=entity_name, **kwargs)
15741608

15751609

1576-
class CmsPartial(DefaultResource):
1610+
class CmsPartial(CmsTemplate):
1611+
""" Resource for partials """
15771612
def __init__(self, entity_name='system_name', **kwargs):
15781613
super().__init__(entity_name=entity_name, **kwargs)

0 commit comments

Comments
 (0)