async def test_api_get_errors(api_url): with pytest.raises(InvalidTokenError): async with prismic.get(api_url, "wrong"): pass with pytest.raises(AuthorizationNeededError): async with prismic.get(api_url, ""): pass with pytest.raises(InvalidURLError): async with prismic.get("htt://wrong_on_purpose", ""): pass
def test_cache(self): # Just implement your own cache object by duck-typing # https://github.com/prismicio/python-kit/blob/master/prismic/cache.py no_cache = NoCache() # This api will use the custom cache object api = prismic.get('https://micro.prismic.io/api', cache=no_cache) self.assertIsNotNone(api)
def test_references(self): preview_token = 'MC5VcXBHWHdFQUFONDZrbWp4.77-9cDx6C3lgJu-_vXZafO-_vXPvv73vv73vv70777-9Ju-_ve-_vSLvv73vv73vv73vv70O77-977-9Me-_vQ' api = prismic.get('https://micro.prismic.io/api', preview_token) release_ref = api.get_ref('myrelease') response = api.query(predicates.at("document.type", "all"), ref=release_ref) self.assertGreaterEqual(response.results_size, 1)
def test_images(self): api = prismic.get('https://micro.prismic.io/api') doc = api.get_by_uid('all', 'all') url = doc.get_image('all.image').url self.assertEqual( url, 'https://prismic-io.s3.amazonaws.com/micro/e185bb021862c2c03a96bea92e170830908c39a3_thermometer.png')
def test_timestamp(self): api = prismic.get('https://micro.prismic.io/api') doc = api.get_by_uid('all', 'all') timestamp = doc.get_timestamp("all.timestamp") self.assertEqual(timestamp.as_datetime, datetime.datetime(2017, 1, 16, 7, 25, 35))
def test_as_html(self): api = prismic.get("http://micro.prismic.io/api") doc = api.get_by_uid('all', 'all') def link_resolver(document_link): return "/document/%s/%s" % (document_link.id, document_link.slug) html = doc.as_html(link_resolver) self.assertIsNotNone(html)
async def test_form(api_url): async with prismic.get(api_url) as api: query = api.form("everything").ref(api.get_master()).query( predicates.at("document.type", "all")) response = await query.submit() assert response.results_size >= 2
def test_date_timestamp(self): api = prismic.get('https://lesbonneschoses.prismic.io/api') response = api.form('everything').query(predicates.at("document.id", "UlfoxUnM0wkXYXbl"))\ .ref(api.get_master()).submit() doc = response.documents[0] # startgist:d0df1672e30871ab6517:prismic-dateTimestamp.py # Date and Timestamp predicates date_before = predicates.date_before("my.product.releaseDate", datetime.datetime(2014, 6, 1)) date_after = predicates.date_after("my.product.releaseDate", datetime.datetime(2014, 1, 1)) date_Between = predicates.date_between("my.product.releaseDate", datetime.datetime(2014, 1, 1), datetime.datetime(2014, 6, 1)) day_of_month = predicates.day_of_month("my.product.releaseDate", 14) day_of_month_after = predicates.day_of_month_after("my.product.releaseDate", 14) day_of_month_before = predicates.day_of_month_before("my.product.releaseDate", 14) day_of_week = predicates.day_of_week("my.product.releaseDate", "Tuesday") day_of_week_after = predicates.day_of_week_after("my.product.releaseDate", "Wednesday") day_of_week_before = predicates.day_of_month_before("my.product.releaseDate", "Wednesday") month = predicates.month("my.product.releaseDate", "June") month_before = predicates.month_before("my.product.releaseDate", "June") month_after = predicates.month_after("my.product.releaseDate", "June") year = predicates.year("my.product.releaseDate", 2014) hour = predicates.hour("my.product.releaseDate", 12) hour_before = predicates.hour_before("my.product.releaseDate", 12) hour_after = predicates.hour_after("my.product.releaseDate", 12) # Accessing Date and Timestamp fields date = doc.get_date("blog-post.date") date_year = date and date.as_datetime.year update_time = doc.get_timestamp("blog-post.update") update_hour = update_time and update_time.as_datetime.hours # endgist self.assertEqual(date_year, 2013)
def test_cache(api_url): # Just implement your own cache object by duck-typing # https://github.com/prismicio/python-kit/blob/master/prismic/cache.py no_cache = NoCache() # This api will use the custom cache object api = prismic.get(api_url, cache=no_cache) assert api is not None
def test_api_private(self): try: # This will fail because the token is invalid, but this is how to access a private API api = prismic.get('https://micro.prismic.io/api', 'MC5-XXXXXXX-vRfvv70') self.fail('Should have thrown') except InvalidTokenError as e: pass
def test_timestamp_html(self): api = prismic.get('https://micro.prismic.io/api') doc = api.get_by_uid('all', 'all') timestamp = doc.get_timestamp("all.timestamp") self.assertEqual(timestamp.as_html, '<time>2017-01-16T07:25:35+0000</time>')
def test_simplequery(self): # startgist:ab49f6c00b8688fe876b:prismic-simplequery.py api = prismic.get("https://lesbonneschoses.prismic.io/api") response = api.form("everything").ref(api.get_master())\ .query(predicates.at("document.type", "product"))\ .submit() # endgist self.assertEqual(response.results_size, 16)
async def test_references(api_url): preview_token = 'MC5VcXBHWHdFQUFONDZrbWp4.77-9cDx6C3lgJu-_vXZafO-_vXPvv73vv73vv70777-9Ju-_ve-_vSLvv73vv73vv73vv70O77-977-9Me-_vQ' async with prismic.get(api_url, preview_token) as api: release_ref = api.get_ref('myrelease') response = await api.query(predicates.at("document.type", "all"), ref=release_ref) assert response.results_size >= 1
def test_api_private(self): try: # startgist:b8844bdf0353cdd46c68:prismic-apiPrivate.py # This will fail because the token is invalid, but this is how to access a private API api = prismic.get('https://lesbonneschoses.prismic.io/api', 'MC5-XXXXXXX-vRfvv70') # endgist self.fail('Should have thrown') # gisthide except InvalidTokenError as e: pass
def test_predicates(self): # startgist:771a09b9d88e0fb53705:prismic-predicates.py api = prismic.get("http://lesbonneschoses.prismic.io/api") response = api.form("everything").ref(api.get_master()) \ .query(predicates.at("document.type", "product"), predicates.date_after("my.blog-post.date", 1401580800000))\ .submit() # endgist self.assertEqual(response.results_size, 0)
def test_cache(self): # startgist:1a43283f77383d57ce02:prismic-cache.py # Just implement your own cache object by duck-typing # https://github.com/prismicio/python-kit/blob/master/prismic/cache.py no_cache = NoCache() # This api will use the custom cache object api = prismic.get('https://lesbonneschoses.prismic.io/api', cache=no_cache) # endgist self.assertIsNotNone(api)
def test_orderings(self): api = prismic.get('https://micro.prismic.io/api') response = api.query(predicates.at("document.type", "all"), page_size=2, orderings='[my.all.number desc]') # The documents are now ordered using the 'number' field, highest first docs = response.documents self.assertGreaterEqual(docs[0].get_number('all.number').value, docs[1].get_number('all.number').value)
async def test_as_html(api_url): async with prismic.get(api_url) as api: doc = await api.get_by_uid('all', 'all') def link_resolver(document_link): return "/document/%s/%s" % (document_link.id, document_link.slug) html = doc.as_html(link_resolver) assert html is not None
def __init__(self, ref_id=None): self.api = prismic.get( settings.PRISMIC.get("api"), settings.PRISMIC.get("token")) self.link_resolver = views.link_resolver self.everything_form_name = "everything" if ref_id != None: self.ref = ref_id else: self.ref = self.api.get_master()
async def test_orderings(api_url): async with prismic.get(api_url) as api: response = await api.query(predicates.at("document.type", "all"), page_size=2, orderings='[my.all.number desc]') # The documents are now ordered using the 'number' field, highest first docs = response.documents assert docs[0].get_number('all.number').value >= docs[1].get_number( 'all.number').value
def test_as_html(self): api = prismic.get("http://lesbonneschoses.prismic.io/api") response = api.form("everything").ref(api.get_master())\ .query(predicates.at("document.id", "UlfoxUnM0wkXYXbX")).submit() # startgist:35dfff6b09283752ac88:prismic-asHtml.py def link_resolver(document_link): return "/document/%s/%s" % (document_link.id, document_link.slug) doc = response.documents[0] html = doc.as_html(link_resolver) # endgist self.assertIsNotNone(html)
def test_get_text(self): api = prismic.get('https://lesbonneschoses.prismic.io/api') response = api.form('everything').query(predicates.at("document.id", "UlfoxUnM0wkXYXbl"))\ .ref(api.get_master()).submit() doc = response.documents[0] # // startgist:f092312c243181a45ebf:prismic-getText.py author = doc.get_text("blog-post.author") if author is None: author = "Anonymous" # endgist self.assertEqual(author, "John M. Martelle, Fine Pastry Magazine")
def __init__(self, request): self.api = prismic.get(settings.PRISMIC.get("api"), settings.PRISMIC.get("token")) self.link_resolver = views.link_resolver self.everything_form_name = "everything" self.google_id = self.api.experiments.current() preview_ref = request.COOKIES.get(prismic.PREVIEW_COOKIE) experiment_ref = self.api.experiments.ref_from_cookie(request.COOKIES.get(prismic.EXPERIMENTS_COOKIE)) if preview_ref is not None: self.ref = preview_ref elif experiment_ref is not None: self.ref = experiment_ref else: self.ref = self.api.get_master()
def test_orderings(self): # startgist:f2c310e66a5c13e225ae:prismic-orderings.py api = prismic.get('https://lesbonneschoses.prismic.io/api') response = api.form('everything')\ .ref(api.get_master())\ .query(predicates.at("document.type", "product"))\ .pageSize(100)\ .orderings('[my.product.price desc]')\ .submit() # The products are now ordered by price, highest first results = response.results # endgist self.assertEqual(response.results_per_page, 100)
def test_images(self): api = prismic.get('https://lesbonneschoses.prismic.io/api') response = api.form('everything').query(predicates.at("document.id", "UlfoxUnM0wkXYXbO")) \ .ref(api.get_master()).submit() doc = response.documents[0] # startgist:4871fb63a54185ee562f:prismic-images.py # Accessing image fields image = doc.get_image('product.image') # By default the 'main' view is returned url = image.url # endgist self.assertEqual( url, 'https://prismic-io.s3.amazonaws.com/lesbonneschoses/f606ad513fcc2a73b909817119b84d6fd0d61a6d.png')
def test_references(self): # startgist:81d114ef589118245811:prismic-references.py preview_token = 'MC5VbDdXQmtuTTB6Z0hNWHF3.c--_vVbvv73vv73vv73vv71EA--_vS_vv73vv70T77-9Ke-_ve-_vWfvv70ebO-_ve-_ve-_vQN377-9ce-_vRfvv70' api = prismic.get('https://lesbonneschoses.prismic.io/api', preview_token) st_patrick_ref = api.get_ref('St-Patrick specials') # Now we'll use this reference for all our calls response = api.form("everything")\ .ref(st_patrick_ref)\ .query(predicates.at("document.type", "product"))\ .submit() # The documents object contains a Response object with all documents of type "product" # including the new "Saint-Patrick's Cupcake" # endgist self.assertEqual(response.results_size, 17)
def test_api_get_errors(self): with self.assertRaises(InvalidTokenError): prismic.get(self.api_url, "wrong") with self.assertRaises(AuthorizationNeededError): prismic.get(self.api_url, "") with self.assertRaises(InvalidURLError): prismic.get("htt://wrong_on_purpose", "")
def __init__(self, request): self.endpoint = settings.PRISMIC.get("api") self.api = prismic.get(self.endpoint, settings.PRISMIC.get("token")) self.link_resolver = views.link_resolver self.everything_form_name = "everything" self.google_id = self.api.experiments.current() preview_ref = request.COOKIES.get(prismic.PREVIEW_COOKIE) experiment_ref = self.api.experiments.ref_from_cookie( request.COOKIES.get(prismic.EXPERIMENTS_COOKIE)) if preview_ref is not None: self.ref = preview_ref elif experiment_ref is not None: self.ref = experiment_ref else: self.ref = self.api.get_master()
def test_get_number(self): api = prismic.get('https://lesbonneschoses.prismic.io/api') response = api.form('everything').query(predicates.at("document.id", "UlfoxUnM0wkXYXbO"))\ .ref(api.get_master()).submit() doc = response.documents[0] # startgist:2d89caba900bb897e72b:prismic-getNumber.py # Number predicates gt = predicates.gt("my.product.price", 10) lt = predicates.lt("my.product.price", 20) in_range = predicates.in_range("my.product.price", 10, 20) # Accessing number fields price = doc.get_number("product.price").value # endgist self.assertEqual(price, 2.5)
def test_images(self): api = prismic.get('https://lesbonneschoses.prismic.io/api') response = api.form('everything').query(predicates.at("document.id", "UlfoxUnM0wkXYXbO")) \ .ref(api.get_master()).submit() doc = response.documents[0] # startgist:4871fb63a54185ee562f:prismic-images.py # Accessing image fields image = doc.get_image('product.image') # By default the 'main' view is returned url = image.url # endgist self.assertEqual( url, 'https://prismic-io.s3.amazonaws.com/lesbonneschoses/f606ad513fcc2a73b909817119b84d6fd0d61a6d.png' )
def test_html_serializer(self): api = prismic.get("http://micro.prismic.io/api") doc = api.get_by_uid('all', 'all') def link_resolver(document_link): return "/document/%s/%s" % (document_link.id, document_link.slug) def html_serializer(element, content): if isinstance(element, prismic.fragments.Block.Image): # Don't wrap images in a <p> tag return element.get_view().as_html(link_resolver) if isinstance(element, prismic.fragments.Span.Hyperlink): # Add a class to links return """<a class="some-link" href="%s">""" % element.get_url(link_resolver) + content + "</a>" return None html = doc.get_structured_text("all.stext").as_html(link_resolver, html_serializer) self.assertIsNotNone(html)
async def test_html_serializer(api_url): async with prismic.get(api_url) as api: doc = await api.get_by_uid('all', 'all') def link_resolver(document_link): return "/document/%s/%s" % (document_link.id, document_link.slug) def html_serializer(element, content): if isinstance(element, prismic.fragments.Block.Image): # Don't wrap images in a <p> tag return element.get_view().as_html(link_resolver) if isinstance(element, prismic.fragments.Span.Hyperlink): # Add a class to links return """<a class="some-link" href="%s">""" % element.get_url( link_resolver) + content + "</a>" return None html = doc.get_structured_text("all.stext").as_html( link_resolver, html_serializer) assert html is not None
def test_date_timestamp(self): api = prismic.get('https://lesbonneschoses.prismic.io/api') response = api.form('everything').query(predicates.at("document.id", "UlfoxUnM0wkXYXbl"))\ .ref(api.get_master()).submit() doc = response.documents[0] # startgist:d0df1672e30871ab6517:prismic-dateTimestamp.py # Date and Timestamp predicates date_before = predicates.date_before("my.product.releaseDate", datetime.datetime(2014, 6, 1)) date_after = predicates.date_after("my.product.releaseDate", datetime.datetime(2014, 1, 1)) date_Between = predicates.date_between("my.product.releaseDate", datetime.datetime(2014, 1, 1), datetime.datetime(2014, 6, 1)) day_of_month = predicates.day_of_month("my.product.releaseDate", 14) day_of_month_after = predicates.day_of_month_after( "my.product.releaseDate", 14) day_of_month_before = predicates.day_of_month_before( "my.product.releaseDate", 14) day_of_week = predicates.day_of_week("my.product.releaseDate", "Tuesday") day_of_week_after = predicates.day_of_week_after( "my.product.releaseDate", "Wednesday") day_of_week_before = predicates.day_of_month_before( "my.product.releaseDate", "Wednesday") month = predicates.month("my.product.releaseDate", "June") month_before = predicates.month_before("my.product.releaseDate", "June") month_after = predicates.month_after("my.product.releaseDate", "June") year = predicates.year("my.product.releaseDate", 2014) hour = predicates.hour("my.product.releaseDate", 12) hour_before = predicates.hour_before("my.product.releaseDate", 12) hour_after = predicates.hour_after("my.product.releaseDate", 12) # Accessing Date and Timestamp fields date = doc.get_date("blog-post.date") date_year = date and date.as_datetime.year update_time = doc.get_timestamp("blog-post.update") update_hour = update_time and update_time.as_datetime.hours # endgist self.assertEqual(date_year, 2013)
def test_html_serializer(self): # startgist:7314e2bf9d81e750280f:prismic-htmlSerializer.py api = prismic.get("http://lesbonneschoses.prismic.io/api") response = api.form("everything").ref(api.get_master()) \ .query(predicates.at("document.id", "UlfoxUnM0wkXYXbX")).submit() def link_resolver(document_link): return "/document/%s/%s" % (document_link.id, document_link.slug) def html_serializer(element, content): if isinstance(element, prismic.fragments.Block.Image): # Don't wrap images in a <p> tag return element.get_view().as_html(link_resolver) if isinstance(element, prismic.fragments.Span.Hyperlink): # Add a class to links return """<a class="some-link" href="%s">""" % element.get_url(link_resolver) + content + "</a>" return None doc = response.documents[0] html = doc.get_structured_text("blog-post.body").as_html(link_resolver, html_serializer) # endgist self.assertIsNotNone(html)
def test_html_serializer(self): # startgist:7314e2bf9d81e750280f:prismic-htmlSerializer.py api = prismic.get("http://lesbonneschoses.prismic.io/api") response = api.form("everything").ref(api.get_master()) \ .query(predicates.at("document.id", "UlfoxUnM0wkXYXbX")).submit() def link_resolver(document_link): return "/document/%s/%s" % (document_link.id, document_link.slug) def html_serializer(element, content): if isinstance(element, prismic.fragments.Block.Image): # Don't wrap images in a <p> tag return element.get_view().as_html(link_resolver) if isinstance(element, prismic.fragments.Span.Hyperlink): # Add a class to links return """<a class="some-link" href="%s">""" % element.get_url( link_resolver) + content + "</a>" return None doc = response.documents[0] html = doc.get_structured_text("blog-post.body").as_html( link_resolver, html_serializer) # endgist self.assertIsNotNone(html)
def setUp(self): super(ApiIntegrationTestCase, self).setUp() self.api = prismic.get(self.api_url, self.token)
def test_api(self): api = prismic.get("https://micro.prismic.io/api") self.assertIsNotNone(api)
def test_form(self): api = prismic.get("https://micro.prismic.io/api") response = api.form("everything").ref(api.get_master())\ .query(predicates.at("document.type", "all"))\ .submit() self.assertGreaterEqual(response.results_size, 2)
def test_api(self): # startgist:4115e45d6b57cfbed844:prismic-api.py api = prismic.get("https://lesbonneschoses.cdn.prismic.io/api") # endgist self.assertIsNotNone(api)
def test_get_number(self): api = prismic.get('https://micro.prismic.io/api') doc = api.get_by_uid('all', 'all') price = doc.get_number("all.number").value self.assertEqual(price, 20.0)
def test_get_text(self): api = prismic.get('https://micro.prismic.io/api') doc = api.get_by_uid('all', 'all') author = doc.get_text("all.text") self.assertEqual(author, "all")