UNPKG

@bigtest/mirage

Version:

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

77 lines (69 loc) 1.9 kB
import { module, test } from 'qunit'; import { Schema, Db, SerializerRegistry, Serializer, Model, hasMany } from '@bigtest/mirage'; module('Integration | Serializers | Base | Serialize ids', { beforeEach() { this.schema = new Schema(new Db(), { wordSmith: Model.extend({ blogPosts: hasMany(), specialPosts: hasMany('blog-post', { inverse: 'specialAuthor' }) }), blogPost: Model }); }, afterEach() { this.schema.db.emptyData(); } }); test(`if serializeIds is 'include' it serializes ids of hasMany associations that are included`, function(assert) { let ApplicationSerializer = Serializer.extend({ serializeIds: 'included' }); let registry = new SerializerRegistry(this.schema, { application: ApplicationSerializer, wordSmith: ApplicationSerializer.extend({ include: ['blogPosts'] }) }); let wordSmith = this.schema.wordSmiths.create({ id: 1, name: 'Link' }); wordSmith.createBlogPost(); wordSmith.createBlogPost(); wordSmith.createSpecialPost(); let result = registry.serialize(wordSmith); assert.deepEqual(result, { wordSmith: { id: '1', name: 'Link', blogPostIds: ['1', '2'] }, blogPosts: [ { id: '1' }, { id: '2' } ] }); }); test(`if serializeIds is 'always' it serializes ids of all hasMany associations`, function(assert) { let registry = new SerializerRegistry(this.schema, { application: Serializer.extend({ serializeIds: 'always' }) }); let wordSmith = this.schema.wordSmiths.create({ id: 1, name: 'Link' }); wordSmith.createBlogPost(); wordSmith.createBlogPost(); wordSmith.createSpecialPost(); let result = registry.serialize(wordSmith); assert.deepEqual(result, { wordSmith: { id: '1', name: 'Link', blogPostIds: ['1', '2'], specialPostIds: ['3'] } }); });