templates: true,
}, function (test) {
test('basic', {
- asserts: 7,
+ asserts: 12,
setup: function (instance, $s, mock) {
mock('dummy.model:fields_view_get', function () {
return {
var view = makeSearchView(instance);
return view.appendTo($fix)
.done(function () {
- // 3 filters, 1 filtergroup group, 1 custom filter, 1 advanced, 1 Filters
- // and 1 SaveFilter widget
- debugger;
- equal(view.drawer.inputs.length, 8,
- 'should have 8 inputs total');
- var group = _.find(view.drawer.inputs, function (f) {
- return f instanceof instance.web.search.GroupbyGroup;
- });
- ok(group, "should have a GroupbyGroup input");
- ok(group.getParent() === view.drawer,
- "group's parent should be the drawer");
+ equal(view.search_fields.length, 0); // 0 fields
+ equal(view.filters.length, 0); // 0 filters (in filter menu)
+ equal(view.groupbys.length, 1); // 1 group of groupbys
+ var group = view.groupbys[0];
+ ok(group instanceof instance.web.search.GroupbyGroup,
+ 'should have a GroupbyGroup input');
+ equal(group.filters.length, 3); // 3 group bys in group
+ ok(group.getParent() === view,
+ "group's parent should be the searchview");
group.toggle(group.filters[0]);
group.toggle(group.filters[2]);
var results = view.build_search_data();
- deepEqual(results.errors, [], "should have no errors");
deepEqual(results.domains, [], "should have no domain");
deepEqual(results.contexts, [
new instance.web.CompoundContext(
"{'group_by': 'foo'}",
"{'group_by': 'baz'}"
], "should have sequence of contexts");
+
+ ok(view.filter_menu instanceof instance.web.search.FilterMenu, 'should have a filter menu');
+ ok(view.groupby_menu instanceof instance.web.search.GroupByMenu, 'should have a group by menu');
+ ok(view.favorite_menu instanceof instance.web.search.FavoriteMenu, 'should have a favorite menu');
});
});
test('unified multiple groupby groups', {
- asserts: 4,
+ asserts: 3,
setup: function (instance, $s, mock) {
mock('dummy.model:fields_view_get', function () {
return {
var view = makeSearchView(instance);
return view.appendTo($fix)
.done(function () {
- // 3 filters, 3 filtergroups, 1 custom filter, 1 advanced, 1 Filters,
- // and 1 SaveFilter widget
- equal(view.drawer.inputs.length, 10, "should have 10 inputs total");
-
- var groups = _.filter(view.drawer.inputs, function (f) {
- return f instanceof instance.web.search.GroupbyGroup;
- });
-
+ var groups = view.groupbys;
equal(groups.length, 3, "should have 3 GroupbyGroups");
groups[0].toggle(groups[0].filters[0]);
equal(view.query.length, 1,
"should have unified groupby groups in single facet");
deepEqual(view.build_search_data(), {
- errors: [],
domains: [],
contexts: [new instance.web.CompoundContext(
"{'group_by': 'foo'}", "{'group_by': 'baz'}")],
return view.appendTo($fix)
.done(function () {
- var $span = $fix.find('.oe_searchview_custom_list span:first').click();
+ var $li = view.favorite_menu.$el.find('li:first').click();
- ok($span.hasClass('badge'), "should check/select the filter's row");
- ok($span.hasClass("oe_searchview_custom_private"),
+ ok($li.hasClass('selected'), "should check/select the filter's row");
+ ok($li.hasClass("oe_searchview_custom_private"),
"should have private filter note/class");
equal(view.query.length, 1, "should have only one facet");
var values = view.query.at(0).values;
return view.appendTo($fix)
.done(function () {
- var $row = $fix.find('.oe_searchview_custom li:first').click();
+ var $row = view.favorite_menu.$el.find('li:first').click();
view.query.remove(view.query.at(0));
- ok(!$row.hasClass('badge'),
+ ok(!$row.hasClass('selected'),
"should not be checked anymore");
});
});
return view.appendTo($fix)
.done(function () {
- var $row = $fix.find('.oe_searchview_custom_list span:first').click();
+ var $row = view.favorite_menu.$el.find('li:first').click();
equal(view.query.length, 1, "should have one facet");
$row.click();
equal(view.query.length, 0, "should have removed facet");
});
return view.appendTo($fix)
.done(function () {
- $fix.find('.oe_searchview_custom_list span:eq(0)').click();
+ view.favorite_menu.$el.find('li:first').click();
equal(view.query.length, 1, "should have one facet");
deepEqual(
view.query.at(0).get('field').get_context(),
{'private': 1},
"should have selected first filter");
- $fix.find('.oe_searchview_custom_list span:eq(1)').click();
+ view.favorite_menu.$el.find('li').eq(1).click();
equal(view.query.length, 1, "should have one facet");
deepEqual(
view.query.at(0).get('field').get_context(),
});
return view.appendTo($fix)
.then(function () {
- $fix.find('.oe_searchview_savefilter input#oe_searchview_custom_input')
- .val("filter name")
- .end()
- .find('.oe_searchview_savefilter button').click();
+ view.favorite_menu.$el.find('.oe-save-name input').first().val("filter name");
+ view.favorite_menu.$el.find('.oe-save-name button').click();
return done.promise();
});
});
return view.appendTo($fix)
.done(function () {
- var $advanced = $fix.find('.oe_searchview_advanced');
+ var $filter_menu = view.filter_menu.$el;
// open advanced search (not actually useful)
- $advanced.find('> h4').click();
+ $filter_menu.find('.oe-add-filter').click();
// select proposition (only one)
- var $prop = $advanced.find('> form li:first');
+ var $prop = $filter_menu.find('.oe-filter-condition');
// field select should have two possible values, dummy and id
- equal($prop.find('.searchview_extended_prop_field option').length,
+ equal($prop.find('select:first option').length,
2, "advanced search should provide choice between two fields");
// field should be dummy
- equal($prop.find('.searchview_extended_prop_field').val(),
+ equal($prop.find('select:first').val(),
'dummy',
"only field should be dummy");
// operator should be "contains"/'ilike'
$prop.find('.searchview_extended_prop_value input')
.val("stupid value");
// validate advanced search
- $advanced.find('button.oe_apply').click();
-
+ $filter_menu.find('button.oe-apply-filter').click();
// resulting search
equal(view.query.length, 1, "search query should have a single facet");
var facet = view.query.at(0);
return view.appendTo($fix)
.done(function () {
- var $advanced = $fix.find('.oe_searchview_advanced');
+ var $filter_menu = view.filter_menu.$el;
// open advanced search (not actually useful)
- $advanced.find('> h4').click();
+ $filter_menu.find('.oe-add-filter').click();
// open second condition
- $advanced.find('button.oe_add_condition').click();
+ $filter_menu.find('a.oe-add-condition').click();
+
// select first proposition
- var $prop1 = $advanced.find('> form li:first');
- $prop1.find('.searchview_extended_prop_field').val('dummy').change();
- $prop1.find('.searchview_extended_prop_op').val('ilike');
+ var $prop1 = $filter_menu.find('.oe-filter-condition:first');
+ $prop1.find('select.searchview_extended_prop_field').val("dummy").change();
+ $prop1.find('select.searchview_extended_prop_op').val('ilike');
$prop1.find('.searchview_extended_prop_value input')
.val("stupid value");
// select first proposition
- var $prop2 = $advanced.find('> form li:last');
+ var $prop2 = $filter_menu.find('.oe-filter-condition:last');
// need to trigger event manually or op not changed
- $prop2.find('.searchview_extended_prop_field').val('id').change();
- $prop2.find('.searchview_extended_prop_op').val('=');
+ $prop2.find('select.searchview_extended_prop_field').val('id').change();
+ $prop2.find('select.searchview_extended_prop_op').val('=');
$prop2.find('.searchview_extended_prop_value input')
.val(42);
// validate advanced search
- $advanced.find('button.oe_apply').click();
+ $filter_menu.find('button.oe-apply-filter').click();
// resulting search
equal(view.query.length, 1, "search query should have a single facet");
var facet = view.query.at(0);
ok(!facet.get('field').get_context(facet),
"advanced search facets should yield no context");
- deepEqual(facet.get('field').get_domain(facet),
+ deepEqual(facet.get('field').get_domain(facet).eval(),
['|', ['dummy', 'ilike', "stupid value"],
['id', '=', 42]],
"advanced search facet should return proposed domain");
});
// TODO: UI tests?
});
+
+
openerp.testing.section('search.invisible', {
dependencies: ['web.search'],
rpc: 'mock',