blossom
Version:
Modern, Cross-Platform Application Framework
101 lines (81 loc) • 3.2 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 */
(function() {
var store, people, places, Person, Place;
suite("SC.Store#loadRecords", {
setup: function() {
Person = SC.Record.extend({
first: SC.Record.attr(String, { isRequired: true}),
last: SC.Record.attr(String),
age: SC.Record.attr(Number),
isAlive: SC.Record.attr(Boolean)
});
Place = SC.Record.extend({
name: SC.Record.attr(String)
});
SC.RunLoop.begin();
store = SC.Store.create();
people = [
Person.create({
guid: 1,
first: "John",
last: "Sproutish",
age: 35,
isAlive: true
}),
Person.create({
guid: 2,
first: "Sarah",
last: "Coop",
age: 28,
isAlive: true
})
];
places = [
Place.create({
guid: 3,
name: "San Francisco"
}),
Place.create({
guid: 4,
name: "St. John's"
})
];
SC.RunLoop.end();
},
teardown: function() {
store = people = places = Person = Place = null;
}
});
test("loadRecords with single Record type loads new records in store", function() {
var storeKeys = store.loadRecords(Person, people),
isStatusCorrect;
ok(SC.isArray(storeKeys), "An array of store keys is returned");
storeKeys.forEach(function(storeKey, index) {
equals(store.idFor(storeKeys[index]), people[index].get('guid'), "The storeKey resolves to the correct Primary Key for index %@".fmt(index));
ok(store.peekStatus(storeKey) & SC.Record.READY_CLEAN, "Record is in SC.Record.READY_CLEAN state after loading into store for index %@".fmt(index));
});
});
test("loadRecords with multiple Record types loads new records in store", function() {
var things = [],
types = [Person, Person, Place, Place],
storeKeys, record;
things.pushObjects(people);
things.pushObjects(places);
things.forEach(function(thing, index) {
ok(SC.kindOf(thing, types[index]), "precond - types array contains correct record type for index %@".fmt(index));
});
storeKeys = store.loadRecords(types, things);
ok(SC.isArray(storeKeys), "An array of store keys is returned");
storeKeys.forEach(function(storeKey, index) {
record = store.materializeRecord(storeKey);
equals(store.idFor(storeKeys[index]), things[index].get('guid'), "The storeKey resolves to the correct Primary Key for index %@".fmt(index));
ok(SC.kindOf(record, types[index]), "store returns a record of the correct type for index %@".fmt(index));
ok(store.peekStatus(storeKey) & SC.Record.READY_CLEAN, "Record is in SC.Record.READY_CLEAN state after loading into store for index %@".fmt(index));
});
});
})();