UNPKG

@bigtest/mirage

Version:

A client-side server to develop, test and prototype your app.

66 lines (55 loc) 2.52 kB
import Helper from './_helper'; import { Model } from '@bigtest/mirage'; import { module, test } from 'qunit'; module('Integration | ORM | Mixed | One To Many Polymorphic | create', { beforeEach() { this.helper = new Helper(); this.helper.schema.registerModel('foo', Model); } }); test('it sets up associations correctly when passing in the foreign key', function(assert) { let post = this.helper.schema.create('post'); let user = this.helper.schema.create('user', { thingIds: [ { type: 'post', id: post.id } ] }); post.reload(); assert.deepEqual(user.thingIds, [ { type: 'post', id: post.id } ]); assert.deepEqual(user.attrs.thingIds, [ { type: 'post', id: post.id } ], 'the ids were persisted'); assert.ok(user.things.includes(post)); assert.deepEqual(post.user.attrs, user.attrs); let { db } = this.helper; assert.equal(db.posts.length, 1); assert.deepEqual(db.posts[0], { id: '1', userId: '1' }); assert.equal(db.users.length, 1); assert.deepEqual(db.users[0], { id: '1', thingIds: [ { type: 'post', id: '1' } ] }); }); test('it sets up associations correctly when passing in an array of models', function(assert) { let post = this.helper.schema.create('post'); let user = this.helper.schema.create('user', { things: [ post ] }); assert.deepEqual(user.thingIds, [ { type: 'post', id: post.id } ]); assert.deepEqual(user.attrs.thingIds, [ { type: 'post', id: post.id } ], 'the ids were persisted'); assert.ok(user.things.includes(post)); assert.deepEqual(post.user.attrs, user.attrs); let { db } = this.helper; assert.equal(db.posts.length, 1); assert.deepEqual(db.posts[0], { id: '1', userId: '1' }); assert.equal(db.users.length, 1); assert.deepEqual(db.users[0], { id: '1', thingIds: [ { type: 'post', id: '1' } ] }); }); test('it sets up associations correctly when passing in a collection', function(assert) { let post = this.helper.schema.create('post'); let user = this.helper.schema.create('user', { things: this.helper.schema.posts.all() }); post.reload(); assert.deepEqual(user.thingIds, [ { type: 'post', id: post.id } ]); assert.deepEqual(user.attrs.thingIds, [ { type: 'post', id: post.id } ], 'the ids were persisted'); assert.ok(user.things.includes(post)); let { db } = this.helper; assert.equal(db.posts.length, 1); assert.deepEqual(db.posts[0], { id: '1', userId: '1' }); assert.equal(db.users.length, 1); assert.deepEqual(db.users[0], { id: '1', thingIds: [ { type: 'post', id: '1' } ] }); });