diff --git a/django/website/media/less/internews.less b/django/website/media/less/internews.less index 9bc352f153b0377deb70dd4c037db4011ae6e5b0..b2685059f0e4b5ebe358b7ee0d95317d362911fb 100644 --- a/django/website/media/less/internews.less +++ b/django/website/media/less/internews.less @@ -169,6 +169,7 @@ body { .sidebar-nav.navbar-collapse { padding-left: 0; padding-right: 0; + clear:both; } margin-bottom:20px; } @@ -239,6 +240,7 @@ body { background-repeat:no-repeat; background-size:cover; min-height:200px; + z-index:@zindex-navbar-fixed; } @media(max-width:@screen-xs) { diff --git a/django/website/rest_api/tests/item_create_view_tests.py b/django/website/rest_api/tests/item_create_view_tests.py index 04cdfc1fc8a65bdce0a68283798153ec42ad0d1a..ebef037a91a36f29ac30b96ca69da2ad712239e6 100644 --- a/django/website/rest_api/tests/item_create_view_tests.py +++ b/django/website/rest_api/tests/item_create_view_tests.py @@ -12,7 +12,10 @@ from rest_api.views import ItemViewSet def create_item(**kwargs): request = APIRequestFactory().post('/items', kwargs) view = ItemViewSet.as_view(actions={'post': 'create'}) - return view(request) + response = view(request) + assert status.is_success(response.status_code), response.data + + return response @pytest.mark.django_db diff --git a/django/website/rest_api/tests/item_delete_tests.py b/django/website/rest_api/tests/item_delete_tests.py index d2d9bc8da8d29d47fbc703faaa63770a645ad92b..701e81890344af714616f21d591b503e87bd5a2a 100644 --- a/django/website/rest_api/tests/item_delete_tests.py +++ b/django/website/rest_api/tests/item_delete_tests.py @@ -2,12 +2,13 @@ from __future__ import unicode_literals, absolute_import import pytest -from data_layer.tests.factories import ItemFactory -from data_layer.models import Item from rest_framework.test import APIRequestFactory from rest_framework import status from ..views import ItemViewSet +from .item_create_view_tests import create_item +from .item_list_view_tests import get as list_items + def delete_item(id): request = APIRequestFactory().delete('/') @@ -15,14 +16,20 @@ def delete_item(id): return view(request, pk=id) +def count_items(): + items = list_items().data + return len(items) + + @pytest.mark.django_db def test_delete_item(): - ItemFactory(body="test1") - item = ItemFactory() - assert Item.objects.count() == 2 - - response = delete_item(item.id) + create_item(body="test1") + item = create_item(body="test2") + assert count_items() == 2 + response = delete_item(item.data['id']) assert status.is_success(response.status_code) - assert Item.objects.count() == 1 - assert Item.objects.get().body == "test1" + assert count_items() == 1 + + [item] = list_items().data + assert item['body'] == "test1" diff --git a/django/website/rest_api/tests/item_list_view_tests.py b/django/website/rest_api/tests/item_list_view_tests.py index 6212aa88d8d47f64b91dbb798379766c23797e8c..7017f0c01c5fc50b47f0365c5c7c682ff0939dc9 100644 --- a/django/website/rest_api/tests/item_list_view_tests.py +++ b/django/website/rest_api/tests/item_list_view_tests.py @@ -6,6 +6,8 @@ from taxonomies.tests.factories import TermFactory from ..views import ItemViewSet +from .item_create_view_tests import create_item + def get(data=None): view = ItemViewSet.as_view(actions={'get': 'list'}) @@ -22,7 +24,7 @@ def test_get_items_returns_empty_if_no_items(): @pytest.mark.django_db def test_get_items_returns_all_items(): - item = ItemFactory(body='test') + create_item(body='test') items = get().data @@ -33,8 +35,8 @@ def test_get_items_returns_all_items(): @pytest.mark.django_db def test_filter_by_body(): - ItemFactory(body="one") - ItemFactory(body="two") + create_item(body="one") + create_item(body="two") payload = get(data={'body': 'one'}).data @@ -44,8 +46,12 @@ def test_filter_by_body(): @pytest.mark.django_db def test_filter_by_id_list(): - ItemFactory() - item_ids = [ItemFactory().id for i in range(10)] + create_item(body='initial item') + + item_ids = [] + for i in range(10): + item = create_item(body='item %d' % i).data + item_ids.append(item['id']) payload = get(data={'ids': item_ids}).data @@ -54,6 +60,8 @@ def test_filter_by_id_list(): @pytest.mark.django_db def test_item_listed_with_associated_terms(): + # TODO: Refactor to use the REST API when we can add + # multiple terms to an item item = ItemFactory() terms = [TermFactory() for i in range(3)] for term in terms: diff --git a/django/website/rest_api/tests/taxonomy_and_term_create_tests.py b/django/website/rest_api/tests/taxonomy_and_term_create_tests.py index 409adebc8b77e4222266289bd855aab4c126e7ef..9564271da3f07879c12f3021de065e4f9001b94f 100644 --- a/django/website/rest_api/tests/taxonomy_and_term_create_tests.py +++ b/django/website/rest_api/tests/taxonomy_and_term_create_tests.py @@ -6,7 +6,6 @@ from django.core.urlresolvers import reverse from rest_framework.test import APIRequestFactory from rest_framework import status -from taxonomies.models import Taxonomy, Term from ..serializers import TermSerializer from ..views import ( TaxonomyViewSet, @@ -25,20 +24,61 @@ def create_category(name): return view(request, pk=id) +def taxonomy_exists(name): + taxonomies = get_taxonomies().data + + names = [t['name'] for t in taxonomies] + + return name in names + + +def term_exists(long_name, slug): + terms = get_terms(slug).data + names = [t['long_name'] for t in terms] + + return long_name in names + + +def count_taxonomies(): + return len(get_taxonomies().data) + + +def get_taxonomies(): + url = reverse('taxonomy-list') + request = APIRequestFactory().get(url) + view = TaxonomyViewSet.as_view(actions={'get': 'list'}) + response = view(request) + assert status.is_success(response.status_code), response.data + + return response + + +def get_terms(taxonomy_slug): + url = reverse('term-list') + request = APIRequestFactory().get(url, + data={'taxonomy': taxonomy_slug}) + view = TermViewSet.as_view(actions={'get': 'list'}) + response = view(request) + assert status.is_success(response.status_code), response.data + + return response + + + @pytest.mark.django_db def test_create_a_category(): category = "Test Ebola Questions" - old_count = Taxonomy.objects.count() - assert not Taxonomy.objects.filter(name=category).exists() + old_count = count_taxonomies() + assert not taxonomy_exists(category) response = create_category(category) assert status.is_success(response.status_code), response.data - new_count = Taxonomy.objects.count() + new_count = count_taxonomies() assert new_count - old_count == 1 - assert Taxonomy.objects.filter(name=category).exists() + assert taxonomy_exists(category) # TODO: write test for getting taxonomies and terms, so we can re-write all @@ -60,6 +100,7 @@ def add_term(**kwargs): @pytest.mark.django_db def test_add_term_to_taxonomy(): + # TODO: Use API to create taxonomy taxonomy = TaxonomyFactory(name='Test Ebola Questions') response1 = add_term(taxonomy=taxonomy.slug, name='Vaccine') @@ -67,18 +108,20 @@ def test_add_term_to_taxonomy(): assert status.is_success(response1.status_code), response1.data assert status.is_success(response2.status_code), response2.data - terms = Term.objects.filter(taxonomy=taxonomy) + terms = get_terms(taxonomy.slug).data assert len(terms) == 2 - assert all(term.taxonomy.name == taxonomy.name for term in terms) + + assert all(term['taxonomy'] == taxonomy.slug for term in terms) @pytest.mark.django_db def test_terms_have_long_name(): + # TODO: Use API to create taxonomy taxonomy = TaxonomyFactory(name="Ebola Questions") vacc_long_name = "Is there a vaccine?" - assert not Term.objects.filter(long_name=vacc_long_name).exists() + assert not term_exists(vacc_long_name, taxonomy.slug) response = add_term( taxonomy=taxonomy.slug, @@ -88,12 +131,12 @@ def test_terms_have_long_name(): assert status.is_success(response.status_code), response.data - assert Term.objects.filter(long_name=vacc_long_name).exists() - + assert term_exists(vacc_long_name, taxonomy.slug) @pytest.mark.django_db def test_id_field_not_in_serialized_terms(): + # TODO: Use API to create term term = TermFactory() serialzed = TermSerializer(term).data