aboutsummaryrefslogtreecommitdiffstats
path: root/test/EntityDeclarationTest.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/EntityDeclarationTest.js')
-rw-r--r--test/EntityDeclarationTest.js46
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);
+};