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();
+});