diff --git a/search/tests/test_search_view.py b/search/tests/test_search_view.py index e5622935..35b46b42 100644 --- a/search/tests/test_search_view.py +++ b/search/tests/test_search_view.py @@ -36,7 +36,7 @@ def test_terms_with_spaces(self): self.resource.terms.add(term) resp = self.client.get(reverse("repositories", args=(self.repo.slug,))) self.assertContains(resp, "easy") - self.assertContains(resp, "ancòra") + self.assertContains(resp, "anc\\u00f2ra") self.assertContains(resp, "very difficult") def test_db_hits(self): diff --git a/ui/jstests/test-facets.js b/ui/jstests/test-facets.js deleted file mode 100644 index 8f5effe7..00000000 --- a/ui/jstests/test-facets.js +++ /dev/null @@ -1,59 +0,0 @@ -define(['QUnit', 'jquery', 'facets', 'icheck'], function(QUnit, $, facets) { - 'use strict'; - var testQueryString = 'selected_facets=foo:bar'; - QUnit.test( - 'Test constructFacetQuery with given input element', - function(assert) { - var testData = $( - '' - )[0]; - var facetQuery = facets.constructFacetQuery(testData); - assert.equal(testQueryString, facetQuery); - } - ); - QUnit.test( - 'Test checkFacets with given input element', - function(assert) { - $( - '' - ).appendTo($('body')); - $('#foobar').iCheck(); - facets.checkFacets(testQueryString); - assert.ok($('#foobar').prop('checked')); - $('#foobar').remove(); - } - ); - QUnit.test( - 'Test setupFacets is working', - function(assert) { - $( - '
' - ).appendTo($('body')); - - $( - '' - ).appendTo($('body')); - // Make mock window for location changing - var testWindow = { - location: '' - }; - testWindow.window = testWindow; - facets.setupFacets(testWindow); - assert.notEqual($('#foobar').find('ins')); - // Check and assert - $('#foobar').iCheck('check'); - assert.equal( - testWindow.window.location, - 'foobarselected_facets=undefined:undefined' - ); - $('#foobar').iCheck('uncheck'); - assert.equal( - testWindow.window.location, - 'foobar' - ); - $('#facet-panel').remove(); - $('#foobar').remove(); - } - ); -}); diff --git a/ui/jstests/test_facets.jsx b/ui/jstests/test_facets.jsx new file mode 100644 index 00000000..2bcfa28c --- /dev/null +++ b/ui/jstests/test_facets.jsx @@ -0,0 +1,287 @@ +define(['QUnit', 'jquery', 'listing_resources', 'react', + 'test_utils', 'lodash'], + function (QUnit, $, ListingResources, React, TestUtils, _) { + 'use strict'; + + var facetCounts = { + "1": { + "facet": {"key": "1", "label": "a"}, + "values": [ + {"count": 2, "key": "1", "label": "t1"}, + {"count": 2, "key": "2", "label": "t2"} + ] + }, + "2": { + "facet": { + "key": "2", + "label": "run" + }, + "values": [] + }, + "3": { + "facet": { + "key": "3", + "label": "s" + }, + "values": [] + }, + "4": { + "facet": { + "key": "4", + "label": "allowmulti" + }, + "values": [ + {"count": 4, "key": "6", "label": "term1"}, + {"count": 4, "key": "7", "label": "term2"} + ] + }, + "5": { + "facet": { + "key": "5", + "label": "disallowmultiple" + }, + "values": [ + {"count": 2, "key": "8", "label": "term3"}, + {"count": 2, "key": "9", "label": "term4"} + ] + }, + "6": { + "facet": { + "key": "6", + "label": "one" + }, + "values": [] + }, + "7": { + "facet": { + "key": "7", + "label": "infinite" + }, + "values": [] + }, + "8": { + "facet": { + "key": "8", + "label": "free" + }, + "values": [ + {"count": 1, "key": "12", "label": "tagging"}, + {"count": 1, "key": "13", "label": "tagging with spaces"} + ] + }, + "course": { + "facet": { + "key": "course", + "label": "Course" + }, + "values": [ + {"count": 47, "key": "0.001", "label": "0.001"}, + {"count": 43, "key": "MIT.latex2edx", "label": "MIT.latex2edx"} + ] + }, + "resource_type": { + "facet": { + "key": "resource_type", + "label": "Item Type" + }, + "values": [ + {"count": 35, "key": "problem", "label": "problem"}, + {"count": 30, "key": "vertical", "label": "vertical"}, + {"count": 12, "key": "sequential", "label": "sequential"}, + {"count": 6, "key": "chapter", "label": "chapter"}, + {"count": 3, "key": "html", "label": "html"}, + {"count": 2, "key": "video", "label": "video"}, + {"count": 2, "key": "course", "label": "course"} + ] + }, + "run": { + "facet": { + "key": "run", + "label": "Run" + }, + "values": [ + {"count": 47, "key": "2015_Summer", "label": "2015_Summer"}, + {"count": 43, "key": "2014_Spring", "label": "2014_Spring"} + ] + } + }; + + var emptyFacetCounts = { + "run": { + "facet": {"key": "run", "label": "Run"}, + "values": [] + }, + "1": {"facet": {"key": "1", "label": "a"}, "values": []}, + "course": {"facet": {"key": "course", "label": "Course"}, "values": []}, + "3": {"facet": {"key": "3", "label": "s"}, "values": []}, + "2": {"facet": {"key": "2", "label": "run"}, "values": []}, + "5": {"facet": {"key": "5", "label": "disallowmultiple"}, "values": []}, + "4": {"facet": {"key": "4", "label": "allowmulti"}, "values": []}, + "7": {"facet": {"key": "7", "label": "infinite"}, "values": []}, + "6": {"facet": {"key": "6", "label": "one"}, "values": []}, + "8": {"facet": {"key": "8", "label": "free"}, "values": []}, + "resource_type": { + "facet": {"key": "resource_type", "label": "Item Type"}, + "values": [] + } + }; + + var Facets = ListingResources.Facets; + + QUnit.module('Test listing facets', { + beforeEach: function () { + TestUtils.setup(); + }, + afterEach: function() { + TestUtils.cleanup(); + } + }); + + QUnit.test('Assert that facets render correctly', function(assert) { + var done = assert.async(); + + var selectedFacets = {}; + var updateFacets = function(facetId, id, checked) { + if (!_.has(selectedFacets, facetId)) { + selectedFacets[facetId] = {}; + } + selectedFacets[facetId][id] = checked; + }; + + var afterMount = function (component) { + var $node = $(React.findDOMNode(component)); + + // Assert correct ordering of facet counts + var titles = _.map($node.find(".panel-title"), function(child) { + return $(child).text(); + }); + assert.deepEqual([ + "Course", "Run", "Item Type", + "a", "allowmulti", "disallowmultiple", "free" + ], titles); + + var terms = _.map($node.find("li label"), function(child) { + return $(child).text(); + }); + assert.deepEqual([ + "0.001", "MIT.latex2edx", "2015_Summer", "2014_Spring", "problem", + "vertical", "sequential", "chapter", "html", "video", "course", + "t1", "t2", "term1", "term2", "term3", "term4", "tagging", + "tagging with spaces" + ], terms); + + done(); + }; + + React.addons.TestUtils.renderIntoDocument(