Skip to content
This repository has been archived by the owner on Jun 29, 2020. It is now read-only.

Commit

Permalink
get_categories, get_platformsタグを実装した
Browse files Browse the repository at this point in the history
  • Loading branch information
giginet committed Jul 12, 2014
1 parent 5bd656e commit 3403a23
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 0 deletions.
24 changes: 24 additions & 0 deletions src/kawaz/apps/products/templatetags/products_tags.py
@@ -1,6 +1,8 @@
from django import template
from django.template import TemplateSyntaxError
from ..models import Product
from ..models import Platform
from ..models import Category

register = template.Library()

Expand Down Expand Up @@ -74,3 +76,25 @@ def get_relative(product):
"""
qs = Product.objects.filter(categories__in=product.categories.all())
return qs.exclude(pk=product.pk).distinct()

@register.assignment_tag
def get_platforms():
"""
全てのPlatform一覧を取り出します。
Syntax:
{% get_platforms as <variable> %}
"""
qs = Platform.objects.all()
return qs

@register.assignment_tag
def get_categories():
"""
全てのCategory一覧を取り出します。
Syntax:
{% get_categories as <variable> %}
"""
qs = Category.objects.all()
return qs
45 changes: 45 additions & 0 deletions src/kawaz/apps/products/tests/test_templatetags.py
Expand Up @@ -5,6 +5,7 @@
from ..models import Category
from ..models import Product
from .factories import ProductFactory
from .factories import PlatformFactory
from .factories import CategoryFactory


Expand Down Expand Up @@ -204,3 +205,47 @@ def test_get_relative(self):
self.assertEqual(products[0], p0)
self.assertEqual(products[1], p1)
self.assertEqual(products[2], p2)

class GetPlatformsTestCase(TestCase):
def _render_template(self):
t = Template(
"{% load products_tags %}"
"{% get_platforms as platforms %}"
)
c = Context()
r = t.render(c)
# get_platforms は何も描画しない
self.assertEqual(r.strip(), "")
return c['platforms']

def test_get_platforms(self):
"""
get_platformsで全てのPlatformを含むQuerySetを返す
"""
PlatformFactory(label='OUYA')
PlatformFactory(label='GameStick')
PlatformFactory(label='Fire TV')
platforms = self._render_template()
self.assertEqual(len(platforms), 3)

class GetCategoriesTestCase(TestCase):
def _render_template(self):
t = Template(
"{% load products_tags %}"
"{% get_categories as categories %}"
)
c = Context()
r = t.render(c)
# get_categories は何も描画しない
self.assertEqual(r.strip(), "")
return c['categories']

def test_get_categories(self):
"""
get_categoriesで全てのCategoryを含むQuerySetを返す
"""
CategoryFactory(label="泣きゲー")
CategoryFactory(label="神ゲー")
CategoryFactory(label="スルメゲー")
categories = self._render_template()
self.assertEqual(len(categories), 3)

0 comments on commit 3403a23

Please sign in to comment.