blossom
Version:
Modern, Cross-Platform Application Framework
58 lines (46 loc) • 1.75 kB
JavaScript
// ==========================================================================
// Project: SproutCore - JavaScript Application Framework
// Copyright: ©2006-2011 Apple Inc. and contributors.
// License: Licensed under MIT license (see license.js)
// ==========================================================================
/*globals module ok equals same test MyApp */
// test parsing of query string
var q, scope1, scope2;
suite("SC.Query#queryWithScope", {
setup: function() {
q = SC.Query.create({
conditions: "foo = bar",
parameters: { foo: "bar" },
orderBy: "foo",
recordType: SC.Record,
recordTypes: [SC.Record],
location: SC.Query.REMOTE
}).freeze();
scope1 = SC.CoreSet.create();
scope2 = SC.CoreSet.create();
},
teardown: function() {
q = scope1 = scope2 = null;
}
});
function verifyCopy(copy, original) {
var keys = 'conditions orderBy recordType recordTypes parameters location'.w();
keys.forEach(function(key) {
equals(copy.get(key), original.get(key), 'copy.%@ should equal original.%@'.fmt(key, key));
});
}
test("getting into scope first time", function() {
var q2 = q.queryWithScope(scope1);
verifyCopy(q2, q);
equals(q2.get('scope'), scope1, 'new query should have scope1');
var q3 = q.queryWithScope(scope1);
equals(q3, q2, 'calling again with same scope should return same instance');
});
test("chained scope", function() {
var q2 = q.queryWithScope(scope1) ;
var q3 = q2.queryWithScope(scope2);
verifyCopy(q3, q2);
equals(q3.get('scope'), scope2, 'new query should have scope2');
var q4 = q2.queryWithScope(scope2);
equals(q4, q3, 'calling again with same scope should return same instance');
});