Пример #1
0
test('View state', function(){
  var collection = new PostCollection();

  this.ajaxResponse = {results: ExampleData.POSTS, meta: {sortField: 'subject', sortDir: 1, page: 0, pageSize: 200}};
  collection.load();

  var queryParams = collection.getQueryParams();
  equal(queryParams.sortField, 'subject', 'query params should include view state');
  equal(queryParams.sortDir, 1, 'query params should include view state');

  var eventLog = new EventLog(collection);
  collection.set({sortField: 'body'});
  equal(eventLog.counts['change:sortField'], 1, 'should fire change event');
  collection.set({sortField: 'body'});
  equal(eventLog.counts['change:sortField'], 1, 'should not fire change when value is the same');
});
Пример #2
0
test('Filters', function() {
  var collection = new PostCollection(ExampleData.POSTS, {processInMemory: true});
  collection.onLoad();
  ok(collection.getRelated('filters') !== undefined, 'should have filters');

  collection.addFilter(
    new Filter({key: 'body', value: 'my body2', comparison: 'equals'}
  ));

  collection.updateInMemory();
  equal(collection.size(), 1, 'should filter all but one');
  collection.getFilters('body')[0].set({value: 'my body', comparison: 'contains'});
  collection.updateInMemory();
  equal(collection.size(), 3, 'all items should pass contains filter');

  collection.addFilter(new Filter({key: 'body', value: '2', comparison: 'contains'}));
  collection.updateInMemory();
  equal(collection.size(), 1, 'should apply multiple filters');

  equal(JSON.parse(atob(collection.getQueryParams().filters))[0].value, 'my body', 'should include filters in query params');
});