diff --git a/test/index.html b/test/index.html index cfa1151e..31b8bb08 100644 --- a/test/index.html +++ b/test/index.html @@ -71,6 +71,7 @@ + diff --git a/test/widget.valuefilter.test.js b/test/widget.valuefilter.test.js new file mode 100644 index 00000000..6b8a86a1 --- /dev/null +++ b/test/widget.valuefilter.test.js @@ -0,0 +1,67 @@ +module("Widget - Value Filter"); + +test('basics', function () { + var dataset = Fixture.getDataset(); + var view = new recline.View.FilterEditor({ + model: dataset + }); + $('.fixtures').append(view.el); + assertPresent('.js-add-filter', view.elSidebar); + var $addForm = view.el.find('form.js-add'); + ok(!$addForm.is(":visible")); + view.el.find('.js-add-filter').click(); + ok(!view.el.find('.js-add-filter').is(":visible")); + ok($addForm.is(":visible")); + + // submit the form + $addForm.find('select.fields').val('country'); + $addForm.submit(); + + // now check we have new filter + ok(!$addForm.is(":visible")); + $editForm = view.el.find('form.js-edit'); + equal($editForm.find('.filter-term').length, 1); + equal(dataset.queryState.attributes.filters[0].field, 'country'); + + // now set filter value and apply + $editForm.find('input').val('UK'); + $editForm.submit(); + equal(dataset.queryState.attributes.filters[0].term, 'UK'); + equal(dataset.records.length, 3); + + // now remove filter + $editForm = view.el.find('form.js-edit'); + $editForm.find('.js-remove-filter').last().click(); + $editForm = view.el.find('form.js-edit'); + equal($editForm.find('.filter').length, 0); + equal(dataset.records.length, 6); + + view.remove(); +}); + +test('add 2 filters', function () { + var dataset = Fixture.getDataset(); + var view = new recline.View.FilterEditor({ + model: dataset + }); + $('.fixtures').append(view.el); + + // add 2 term filters + var $addForm = view.el.find('form.js-add'); + view.el.find('.js-add-filter').click(); + $addForm.find('select.fields').val('country'); + $addForm.submit(); + + $addForm = view.el.find('form.js-add'); + view.el.find('.js-add-filter').click(); + $addForm.find('select.fields').val('id'); + $addForm.submit(); + + var fields = []; + view.el.find('form.js-edit .filter-term input').each(function(idx, item) { + fields.push($(item).attr('data-filter-field')); + }); + deepEqual(fields, ['country', 'id']); + + view.remove(); +});