Skip to content

Commit

Permalink
fix persistance of relations
Browse files Browse the repository at this point in the history
  • Loading branch information
Stefan Rinner authored and Stefan Rinner committed Jun 8, 2010
1 parent 6a54771 commit df24028
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 7 deletions.
16 changes: 9 additions & 7 deletions lib/ringo/storage/mongodbstore.js
Expand Up @@ -105,23 +105,25 @@ function Store(host, port, dbName, options) {

this.getKey = function(type, arg) {
if (isEntity(arg)) {
return type + ':' + arg.get('_id');
return arg.get('_id');
} else if (isKey(arg)) {
return arg;
}
return null;
};

this.getId = function(key) {
if (isKey(key)) {
return key.split(':')[1];
}
return null;
return isKey(key) ? key : null;
};

this.getProperties = function(store, entity) {
var props = {};
var map = new ScriptableMap(entity.toMap());
var map;
if(isStorable(entity)){
map = entity;
} else {
map = new ScriptableMap(entity.toMap());
}
for (var i in map) {
var value = map[i];
if (isKey(value) && i != "_id") {
Expand All @@ -131,7 +133,7 @@ function Store(host, port, dbName, options) {
for (var it = value.iterator(); it.hasNext(); ) {
var obj = it.next();
array.push(isKey(obj) ?
create(obj.getKind(), obj) : obj);
create(extractTypeFromKey(obj), obj) : obj);
}
value = array;
} else if (value instanceof java.util.Date) {
Expand Down
32 changes: 32 additions & 0 deletions test/all.js
Expand Up @@ -8,6 +8,7 @@ var store = new Store('localhost', 27017, "rist");

var personId, person;
var Person = store.defineEntity('Person');
var Address = store.defineEntity('Address');
const FIRST_NAME_1 = 'Hans';
const FIRST_NAME_2 = 'Herbert';
const LAST_NAME = 'Wurst';
Expand All @@ -31,6 +32,9 @@ exports.setUp = exports.tearDown = function () {
for each (let instance in Person.all()) {
instance.remove(); // Clean up.
}
for each (let instance in Address.all()) {
instance.remove(); // Clean up.
}
};

exports.testPersistCreation = function () {
Expand Down Expand Up @@ -74,6 +78,34 @@ exports.testPersistDeletion = function () {
assertEqual(0, Person.all().length);
};

exports.testPersistOneToOneRelations = function () {
person = createTestPerson();
person.save();
var address = new Address();
address.city = "Vienna";
address.street = "Börsegasse 11";
person.address = address;
person.save();
assertEqual(Address.all()[0], Person.all()[0].address);
};

exports.testPersistRelations = function () {
person = createTestPerson();
person.save();
var addressA = new Address();
addressA.city = "Vienna";
addressA.street = "Börsegasse";
var addressB = new Address();
addressB.city = "Vienna";
addressB.street = "Marxergasse";
person.addresses = [addressA, addressB];
person.save();
var personsAddresses = Person.all()[0].addresses;
assertEqual(2, personsAddresses.length);
assertTrue(personsAddresses[0] != personsAddresses[1] && personsAddresses[0] == addressA || personsAddresses[0] == addressB && personsAddresses[1] == addressA || personsAddresses[1] == addressB)
};


exports.testBasicQuerying = function () {
person = createTestPerson();
person.save();
Expand Down

0 comments on commit df24028

Please sign in to comment.