root/GearsORM/trunk/tests/test_m2m.html

Revision 338, 2.6 kB (checked in by uriel, 1 year ago)

*added events to model classes
*added test for model events
*small cleanup in model constructor

Line 
1 <html>
2         <head>
3                 <script src="../gears_init.js"></script>
4                 <script src="../GearsORM.js"></script>
5                 <script src="../GearsORM.Events.js"></script>
6                 <script src="../GearsORM.ResultIterator.js"></script>
7                 <script src="../GearsORM.Sql.js"></script>
8                 <script src="../GearsORM.Fields.js"></script>
9                 <script src="../GearsORM.Model.js"></script>
10                 <script src="../GearsORM.Introspection.js"></script>
11                 <script src="../GearsORM.Transaction.js"></script>
12                 <script>
13                         GearsORM.dbName = "test.m2m";
14                         var Tag = new GearsORM.Model({
15                                 name:"Tag",
16                                 fields:
17                                 {
18                                         name:new GearsORM.Fields.String({maxLength:20}),
19                                         posts:new GearsORM.Fields.ManyToMany({related:"Post"})
20                                 }
21                         });
22                         var Post = new GearsORM.Model({
23                                 name:"Post",
24                                 fields:
25                                 {
26                                         title:new GearsORM.Fields.String({maxLength:50}),
27                                         body:new GearsORM.Fields.String({maxLength:5000}),
28                                         tags:new GearsORM.Fields.ManyToMany({related:"Tag"})
29                                 }
30                         });
31                        
32                         var Tests =
33                         {
34                                 up:function()
35                                 {
36                                         Post.dropTable();
37                                         Tag.dropTable();
38                                         Post.createTable();
39                                         Tag.createTable();
40                                         new Post({title:"test post",body:"test body"}).save();
41                                         new Tag({name:"test tag"}).save();
42                                 },
43                                 "test if select works with ManyToMany relation":function()
44                                 {
45                                         //create relation Post<=>Tag
46                                         var post = Post.select().getOne();
47                                         var tag = Tag.select().getOne();
48                                        
49                                         post.tags.add(tag);
50                                         UnitTest.assertTrue(
51                                                 post.tags.select().toArray().length == 1 && tag.posts.select().toArray().length == 1,
52                                                 "relation between tag<=>post wasn`t created"
53                                         );
54                                 },
55                                 "test if remove works with ManyToMany relation":function()
56                                 {
57                                         var post = Post.select().getOne();
58                                         var tag = Tag.select().getOne();
59                                         post.tags.remove(tag);
60                                         UnitTest.assertTrue(
61                                                 post.tags.select().toArray().length == 0 && tag.posts.select().toArray().length == 0,
62                                                 "relation between tag<=>post wasn`t deleted"
63                                         );
64                                 },
65                                 "test if m2m forigen keys are enforced":function()
66                                 {
67                                         var post = Post.select().getOne();
68                                         var newTag = new Tag({name:"test new tag",rowid:10});
69                                         //insert
70                                         try
71                                         {
72                                                 post.tags.add(newTag);
73                                         }
74                                         catch(e)
75                                         {
76                                                 return;
77                                         }
78                                         //delete
79                                         try
80                                         {
81                                                 post.tags.remove(newTag);
82                                         }
83                                         catch(e)
84                                         {
85                                                 return;
86                                         }
87                                         throw new Error("a exception didn`t happen even that the insert or delete vaiolate the forigen key");
88                                 },
89                                 down:function()
90                                 {
91                                         Post.dropTable();
92                                         Tag.dropTable();
93                                 }
94                         };
95                 </script>
96                 <script src="unit_test.js"></script>
97         </head>
98         <body>
99                
100         </body>
101 </html>
Note: See TracBrowser for help on using the browser.