From 4e27cdff3b5e125fe85aacc37b64681769eec755 Mon Sep 17 00:00:00 2001 From: Harminder virk Date: Wed, 2 Oct 2019 10:10:50 +0530 Subject: [PATCH] test: add another use case test for hasMany --- test-helpers/tmp/db.sqlite | Bin 32768 -> 32768 bytes test/orm/model-has-many.spec.ts | 59 ++++++++++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/test-helpers/tmp/db.sqlite b/test-helpers/tmp/db.sqlite index 4e86a0d5694f9aba8e8cbc4730f6c7ee20c3554c..869f8ec76d78c6009cd50c4a7c7766e054a50c81 100644 GIT binary patch delta 229 zcmZo@U}|V!njj^_Qq91?zyZW8K+Fcjl@oQ0m{_VeCajcay~7WLn*{~V@Jnhk0_9W~ zlk;MFl{bIX3e++~%Jcz%lu~y%g&^pw`nst$X<$1(?|w z808rln0!i;GgA}{4Fs6b1Plcj*%&w#85kT>^7Ar_fl3T{fhIBtFfj1H { public posts: Post[] } - await db.insertQuery().table('users').insert([{ username: 'virk' }, { username: 'nikk' }]) + await db.insertQuery().table('users').insert([{ username: 'virk' }]) const users = await db.query().from('users') await db.insertQuery().table('posts').insert([ @@ -187,16 +187,69 @@ test.group('Model | Has Many', (group) => { title: 'Adonis 101', }, { - user_id: users[1].id, + user_id: users[0].id, title: 'Lucid 101', }, ]) User.$boot() const user = await User.query().preload('posts').where('username', 'virk').first() - assert.lengthOf(user!.posts, 1) + assert.lengthOf(user!.posts, 2) assert.instanceOf(user!.posts[0], Post) assert.equal(user!.posts[0].userId, user!.id) + + assert.instanceOf(user!.posts[1], Post) + assert.equal(user!.posts[1].userId, user!.id) + }) + + test('preload has many relationship for many rows', async (assert) => { + class Post extends BaseModel { + @column({ primary: true }) + public id: number + + @column() + public userId: number + + @column() + public title: string + } + + class User extends BaseModel { + @column({ primary: true }) + public id: number + + @hasMany(() => Post) + public posts: Post[] + } + + await db.insertQuery().table('users').insert([{ username: 'virk' }, { username: 'nikk' }]) + await db.insertQuery().table('posts').insert([ + { + user_id: 1, + title: 'Adonis 101', + }, + { + user_id: 1, + title: 'Lucid 101', + }, + { + user_id: 2, + title: 'Lucid 102', + }, + ]) + + User.$boot() + const users = await User.query().preload('posts') + + assert.lengthOf(users[0]!.posts, 2) + assert.instanceOf(users[0].posts[0], Post) + assert.equal(users[0].posts[0].userId, users[0].id) + assert.instanceOf(users[0].posts[1], Post) + assert.equal(users[0].posts[1].userId, users[0].id) + + assert.lengthOf(users[1]!.posts, 1) + assert.instanceOf(users[1].posts[0], Post) + assert.equal(users[1].posts[0].userId, users[1].id) }) test('raise exception when local key is not selected', async (assert) => {