From 1bd1b3f86052b23b122825cb527524fd2894d7f3 Mon Sep 17 00:00:00 2001 From: Martin Burchell <martinb@aptivate.org> Date: Thu, 23 Jul 2015 13:04:29 +0100 Subject: [PATCH] Added term item count to transport layer --- django/website/transport/taxonomies.py | 15 +++++-- .../tests/taxonomy_term_itemcount_tests.py | 43 +++++++++++++++++++ 2 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 django/website/transport/tests/taxonomy_term_itemcount_tests.py diff --git a/django/website/transport/taxonomies.py b/django/website/transport/taxonomies.py index 358f11bb..b42bc76d 100644 --- a/django/website/transport/taxonomies.py +++ b/django/website/transport/taxonomies.py @@ -3,7 +3,6 @@ from django.core.urlresolvers import reverse from rest_api.views import TaxonomyViewSet from rest_framework.test import APIRequestFactory -actions = {'get': 'list'} request_factory = APIRequestFactory() @@ -11,7 +10,11 @@ def list_url(): return reverse('taxonomy-list') -def get_view(): +def itemcount_url(slug): + return reverse('taxonomy-itemcount', kwargs={'slug': slug}) + + +def get_view(actions): return TaxonomyViewSet.as_view(actions) @@ -22,6 +25,12 @@ def list(**kwargs): to filter the Taxonomies. """ - view = get_view() + view = get_view(actions={'get': 'list'}) request = request_factory.get(list_url(), kwargs) return view(request).data + + +def term_itemcount(slug): + view = get_view(actions={'get': 'itemcount'}) + request = request_factory.get(itemcount_url(slug)) + return view(request, slug=slug).data diff --git a/django/website/transport/tests/taxonomy_term_itemcount_tests.py b/django/website/transport/tests/taxonomy_term_itemcount_tests.py new file mode 100644 index 00000000..38dba5f5 --- /dev/null +++ b/django/website/transport/tests/taxonomy_term_itemcount_tests.py @@ -0,0 +1,43 @@ +from __future__ import unicode_literals, absolute_import +import pytest + +from taxonomies.tests.factories import ( + TaxonomyFactory, + TermFactory, +) + +import transport + + +@pytest.fixture +def item_data(): + item = {'body': "What is the cuse of ebola?"} + return transport.items.create(item) + + +@pytest.fixture +def questions_category(): + # TODO: Replace with transport call when we have one + return TaxonomyFactory(name="Ebola Questions") + + +@pytest.fixture +def questions_term(questions_category): + # TODO: Replace with transport call when we have one + return TermFactory(taxonomy=questions_category) + + +@pytest.mark.django_db +def test_term_itemcount_returns_terms_and_counts(item_data, + questions_category, + questions_term): + + # This is tested more comprehensively in the API tests + transport.items.add_term(item_data['id'], + questions_category.slug, + questions_term.name) + + terms = transport.taxonomies.term_itemcount(slug=questions_category.slug) + counts = {term['name']: term['count'] for term in terms} + + assert counts[questions_term.name] == 1 -- GitLab