// ========================================================================== // Project: SproutCore - JavaScript Application Framework // Copyright: ©2006-2011 Apple Inc. and contributors. // License: Licensed under MIT license (see license.js) // ==========================================================================

(function() {

var store, Person, Place;

module("SC.Store#unloadRecords", {
  setup: function() {
    Person = SC.Record.extend({
      name: SC.Record.attr(String)
    });

    Place = SC.Record.extend({
      name: SC.Record.attr(String)
    });

    SC.RunLoop.begin();

    store = SC.Store.create();

    store.loadRecords(Person, [
      {guid: 1, name: 'Soups'},
      {guid: 2, name: 'Palmdale'},
      {guid: 3, name: 'Dubs'}
    ]);

    store.loadRecords(Place, [
      {guid: 4, name: "San Francisco"},
      {guid: 5, name: "St. John's"}
    ]);

    SC.RunLoop.end();
  },
  teardown: function() {
    store = Person = Place = null;
  }
});

test("Unload all records of a record type", function() {
  var records = store.find(Person);
  equals(records.get('length'), 3, "precond - store has 3 records loaded");
  store.unloadRecords(Person);
  records = store.find(Person);
  equals(records.get('length'), 0, "Number of People records left");
});

test("Unload only certain records of a record type", function() {
  var records = store.find(Person);
  equals(records.get('length'), 3, "precond - store has 3 records loaded");
  store.unloadRecords(Person, [1, 2]);
  records = store.find(Person);
  equals(records.get('length'), 1, "Number of People records left");
});

test("Unload all records of passed record types", function() {
  var people = store.find(Person),
      places = store.find(Place);

  equals(people.get('length'), 3, "precond - store has 3 Person records loaded");
  equals(places.get('length'), 2, "precond - store has 2 Place records loaded");

  store.unloadRecords([Person, Place]);

  people = store.find(Person);
  places = store.find(Place);

  equals(people.get('length'), 0, "Number of People records left");
  equals(places.get('length'), 0, "Number of Place records left");
});

test("Unload certain records of passed record types", function() {
  var people = store.find(Person),
      places = store.find(Place);

  equals(people.get('length'), 3, "precond - store has 3 Person records loaded");
  equals(places.get('length'), 2, "precond - store has 2 Place records loaded");

  store.unloadRecords([Person, Person, Place], [1, 2, 4]);

  people = store.find(Person);
  places = store.find(Place);

  equals(people.get('length'), 1, "Number of People records left");
  equals(places.get('length'), 1, "Number of Place records left");
});

})();