diff options
Diffstat (limited to 'test/EntityDeclarationTest.js')
| -rw-r--r-- | test/EntityDeclarationTest.js | 46 | 
1 files changed, 46 insertions, 0 deletions
| diff --git a/test/EntityDeclarationTest.js b/test/EntityDeclarationTest.js new file mode 100644 index 00000000..5cab90f4 --- /dev/null +++ b/test/EntityDeclarationTest.js @@ -0,0 +1,46 @@ +EntityDeclarationTest = TestCase('EntityDeclarationTest'); + +EntityDeclarationTest.prototype.testEntityTypeOnly = function(){ +  expectAsserts(2); +  var scope = new nglr.Scope({$datastore:{entity:function(name){ +    assertEquals("Person", name); +  }}}); +  var init = scope.entity("Person"); +  assertEquals("", init); +}; + +EntityDeclarationTest.prototype.testWithDefaults = function(){ +  expectAsserts(4); +  var scope = new nglr.Scope({$datastore:{entity:function(name, init){ +    assertEquals("Person", name); +    assertEquals("=a:", init.a); +    assertEquals(0, init.b.length); +  }}}); +  var init = scope.entity('Person:{a:"=a:", b:[]}'); +  assertEquals("", init); +}; + +EntityDeclarationTest.prototype.testWithName = function(){ +  expectAsserts(2); +  var scope = new nglr.Scope({$datastore:{entity:function(name, init){ +    assertEquals("Person", name); +    return function (){ return {}; }; +  }}}); +  var init = scope.entity('friend=Person'); +  assertEquals("$anchor.friend:{friend=Person.load($anchor.friend);friend.$$anchor=\"friend\";};", init); +}; + +EntityDeclarationTest.prototype.testMultipleEntities = function(){ +  expectAsserts(3); +  var expect = ['Person', 'Book']; +  var i=0; +  var scope = new nglr.Scope({$datastore:{entity:function(name, init){ +    assertEquals(expect[i], name); +    i++; +    return function (){ return {}; }; +  }}}); +  var init = scope.entity('friend=Person;book=Book;'); +  assertEquals("$anchor.friend:{friend=Person.load($anchor.friend);friend.$$anchor=\"friend\";};" + +               "$anchor.book:{book=Book.load($anchor.book);book.$$anchor=\"book\";};", +               init); +}; | 
