Changeset 407 for GearsORM/trunk/tests

Show
Ignore:
Timestamp:
03/15/08 09:57:00 (9 months ago)
Author:
uriel
Message:

*added test for level 2+ relations
*fixed bug where rowid wasn`t fetched for related models

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • GearsORM/trunk/tests/test_relations.html

    r338 r407  
    1212                <script> 
    1313                        GearsORM.dbName = "test.relations"; 
     14                        var Corporation = new GearsORM.Model({ 
     15                                name:"Corporation", 
     16                                fields: 
     17                                { 
     18                                        name:new GearsORM.Fields.String({maxLength:25}), 
     19                                        companies:new GearsORM.Fields.ManyToOne({related:"Company"}) 
     20                                }        
     21                        }); 
     22                         
    1423                        var Company = new GearsORM.Model({ 
    1524                                name:"Company", 
     
    1726                                { 
    1827                                        name:new GearsORM.Fields.String({maxLength:25}), 
    19                                         pepole:new GearsORM.Fields.ManyToOne({related:"Person"}) 
     28                                        pepole:new GearsORM.Fields.ManyToOne({related:"Person"}), 
     29                                        corporation:new GearsORM.Fields.OneToMany({related:"Corporation"}) 
    2030                                } 
    2131                        }); 
     
    3747                                        Company.dropTable(); 
    3848                                        Person.dropTable(); 
     49                                        Corporation.dropTable(); 
     50                                        Corporation.createTable(); 
    3951                                        Company.createTable(); 
    4052                                        Person.createTable(); 
    41                                         (new Company({name:"Company1"})).save(); 
    42                                         (new Company({name:"Company2"})).save(); 
     53                                        var corp = (new Corporation({name:"Corporation1"})).save(); 
     54                                        (new Company({name:"Company1",corporation:corp})).save(); 
     55                                        (new Company({name:"Company2",corporation:corp})).save(); 
    4356                                }, 
    4457                                "test if create works with relation":function() 
     
    4760                                        someone.firstName = "Jhon"; 
    4861                                        someone.lastName = "Doe"; 
    49                                         someone.company = Company.select("name = ?",["Company1"]).getOne(); 
     62                                        someone.company = Company.select("Company.name = ?",["Company1"]).getOne(); 
    5063                                        someone.save(); 
    5164                                        UnitTest.assertDefined(someone.rowid); 
     
    5366                                        someone2.firstName = "Jhon"; 
    5467                                        someone2.lastName = "Doe"; 
    55                                         someone2.company = Company.select("name = ?",["Company2"]).getOne(); 
     68                                        someone2.company = Company.select("Company.name = ?",["Company2"]).getOne(); 
    5669                                        someone2.save(); 
    5770                                        UnitTest.assertDefined(someone2.rowid); 
     
    5972                                "test select from backward relation":function() 
    6073                                { 
    61                                         var company1 = Company.select("name = ?",["Company1"]).getOne(); 
     74                                        var company1 = Company.select("Company.name = ?",["Company1"]).getOne(); 
    6275                                        UnitTest.assertTrue( 
    6376                                                company1.pepole.select().toArray().length == 1, 
     
    6780                                "test remove from backward relation":function() 
    6881                                { 
    69                                         var company2 = Company.select("name = ?",["Company2"]).getOne(); 
     82                                        var company2 = Company.select("Company.name = ?",["Company2"]).getOne(); 
    7083                                        var someone2 = new Person(2); 
    7184                                        someone2.remove(); 
     
    7992                                        var aCompany = new Company(); 
    8093                                        aCompany.name = "aCompany"; 
     94                                        aCompany.corporation = Corporation.select().getOne(); 
    8195                                        aCompany.save(); 
    8296                                        var aPerson = new Person(); 
     
    91105                                        ); 
    92106                                        aCompany.remove(); 
     107                                }, 
     108                                "test for 2+ level depth of relations":function() 
     109                                { 
     110                                        var corp = new Corporation(); 
     111                                        corp.name = "Test Corporation 1"; 
     112                                        corp.save(); 
     113                                        var comp = new Company(); 
     114                                        comp.name = "Test Company 1"; 
     115                                        comp.corporation = corp; 
     116                                        comp.save(); 
     117                                        var person = new Person(); 
     118                                        person.firstName = "John"; 
     119                                        person.lastName = "Doe"; 
     120                                        person.company = comp; 
     121                                        person.save(); 
     122                                         
     123                                        var personFromDb = new Person(person.rowid); 
     124                                        UnitTest.assertTrue( 
     125                                                !!personFromDb.company && 
     126                                                !!personFromDb.company.corporation && 
     127                                                personFromDb.company.rowid == comp.rowid && 
     128                                                personFromDb.company.corporation.rowid == corp.rowid, 
     129                                                "related models weren`t selected" 
     130                                        ); 
    93131                                }, 
    94132                                "test if forigen key is enforced in a insert":function()