116 lines
3.6 KiB
JavaScript
116 lines
3.6 KiB
JavaScript
module("Widget - Filter Editor");
|
|
|
|
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 set a second range filter ...
|
|
view.$el.find('.js-add-filter').click();
|
|
var $addForm = view.$el.find('form.js-add');
|
|
$addForm.find('select.fields').val('x');
|
|
$addForm.find('select.filterType').val('range');
|
|
$addForm.submit();
|
|
|
|
$editForm = view.$el.find('form.js-edit');
|
|
$editForm.find('.filter-range input').first().val('2');
|
|
$editForm.find('.filter-range input').last().val('4');
|
|
$editForm.submit();
|
|
equal(dataset.queryState.attributes.filters[0].term, 'UK');
|
|
equal(dataset.queryState.attributes.filters[1].from, 2);
|
|
equal(dataset.records.length, 2);
|
|
|
|
// 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, 1)
|
|
equal(dataset.records.length, 3);
|
|
|
|
$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 of same type', 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();
|
|
|
|
var $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();
|
|
});
|
|
|
|
test('geo_distance', function () {
|
|
var dataset = Fixture.getDataset();
|
|
var view = new recline.View.FilterEditor({
|
|
model: dataset
|
|
});
|
|
$('.fixtures').append(view.el);
|
|
|
|
var $addForm = view.$el.find('form.js-add');
|
|
// submit the form
|
|
$addForm.find('select.filterType').val('geo_distance');
|
|
$addForm.find('select.fields').val('lon');
|
|
$addForm.submit();
|
|
|
|
// now check we have new filter
|
|
$editForm = view.$el.find('form.js-edit');
|
|
equal($editForm.find('.filter-geo_distance').length, 1)
|
|
deepEqual(_.sortBy(_.keys(dataset.queryState.attributes.filters[0]),_.identity),
|
|
["distance", "field", "point", "type", "unit"]);
|
|
|
|
// now set filter value and apply
|
|
$editForm.find('input[name="lat"]').val(10);
|
|
$editForm.submit();
|
|
equal(dataset.queryState.attributes.filters[0].point.lat, 10);
|
|
|
|
view.remove();
|
|
});
|