Skip to content
This repository has been archived by the owner on Feb 13, 2019. It is now read-only.

Commit

Permalink
allow query params for public campaign endpoint images
Browse files Browse the repository at this point in the history
  • Loading branch information
kand committed Apr 28, 2016
1 parent 1ef6e00 commit 1abb6bf
Show file tree
Hide file tree
Showing 2 changed files with 105 additions and 17 deletions.
22 changes: 19 additions & 3 deletions bulbs/content/templatetags/content.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
try:
from urllib.parse import urljoin
from urllib.parse import urljoin, urlencode
except ImportError:
from urlparse import urljoin
from urllib import urlencode

from django import template
from django.conf import settings
Expand All @@ -11,9 +12,24 @@


@register.simple_tag
def content_tunic_campaign_url(campaign_id):
def content_tunic_campaign_url(campaign_id,
image_ratio=None,
image_width=None,
image_format=None):

url_base = "campaign/{}/public".format(campaign_id)

raw_params = {}
if image_ratio:
raw_params["image_ratio"] = image_ratio
if image_width:
raw_params["image_width"] = image_width
if image_format:
raw_params["image_format"] = image_format
url_params = "{}".format(urlencode(raw_params))

path = urljoin(
settings.TUNIC_API_PATH,
"campaign/{}/public".format(campaign_id)
"{}?{}".format(url_base, url_params)
)
return urljoin(settings.TUNIC_BACKEND_ROOT, path)
100 changes: 86 additions & 14 deletions tests/content/test_content_templatetags.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,99 @@
TEST_TUNIC_API_PATH = "/api/path/"


class ContentTemplateTagsTestCase(BaseIndexableTestCase):
@override_settings(
TUNIC_BACKEND_ROOT=TEST_TUNIC_BACKEND_ROOT,
TUNIC_API_PATH=TEST_TUNIC_API_PATH,
)
class ContentTemplateTagTunicCampaignUrlTestCase(BaseIndexableTestCase):

def setUp(self):
super(ContentTemplateTagTunicCampaignUrlTestCase, self).setUp()

self.campaign_id = 1

@override_settings(
TUNIC_BACKEND_ROOT=TEST_TUNIC_BACKEND_ROOT,
TUNIC_API_PATH=TEST_TUNIC_API_PATH,
)
def test_content_tunic_campaign_url(self):
"""Test how template renders with an id."""

campaign_id = 1

t = Template("{{% load content %}}{{% content_tunic_campaign_url {} %}}".format(campaign_id))
c = Context({})
self.assertEquals(t.render(c), "{}{}campaign/{}/public".format(
TEST_TUNIC_BACKEND_ROOT,
TEST_TUNIC_API_PATH,
campaign_id
))
renderer = Template(
"{{% load content %}}{{% content_tunic_campaign_url {} %}}".format(
self.campaign_id
)
)
self.assertEquals(
renderer.render(Context({})),
"{}{}campaign/{}/public".format(
TEST_TUNIC_BACKEND_ROOT,
TEST_TUNIC_API_PATH,
self.campaign_id
)
)

def test_content_tunic_campaign_url_no_id(self):
"""Template should error out if no id was given."""

with self.assertRaises(TemplateSyntaxError):
Template("{% load content %}{% content_tunic_campaign_url %}")

def test_content_tunic_campaign_url_ratio_param(self):
"""Template should request with a ratio param if given."""

image_ratio = "3x1"

renderer = Template(
"{{% load content %}}{{% content_tunic_campaign_url {} image_ratio='{}' %}}".format(
self.campaign_id,
image_ratio
)
)
self.assertEquals(
renderer.render(Context({})),
"{}{}campaign/{}/public?image_ratio={}".format(
TEST_TUNIC_BACKEND_ROOT,
TEST_TUNIC_API_PATH,
self.campaign_id,
image_ratio
)
)

def test_content_tunic_campaign_url_width_param(self):
"""Template should request with a width param if given."""

image_width = 300

renderer = Template(
"{{% load content %}}{{% content_tunic_campaign_url {} image_width={} %}}".format(
self.campaign_id,
image_width
)
)
self.assertEquals(
renderer.render(Context({})),
"{}{}campaign/{}/public?image_width={}".format(
TEST_TUNIC_BACKEND_ROOT,
TEST_TUNIC_API_PATH,
self.campaign_id,
image_width
)
)

def test_content_tunic_campaign_url_format_param(self):
"""Template should request with a format param if given."""

image_format = "png"

renderer = Template(
"{{% load content %}}{{% content_tunic_campaign_url {} image_format='{}' %}}".format(
self.campaign_id,
image_format
)
)
self.assertEquals(
renderer.render(Context({})),
"{}{}campaign/{}/public?image_format={}".format(
TEST_TUNIC_BACKEND_ROOT,
TEST_TUNIC_API_PATH,
self.campaign_id,
image_format
)
)

0 comments on commit 1abb6bf

Please sign in to comment.