From 65c2ce4755beffb6d705bd702879dffc20fed9ae Mon Sep 17 00:00:00 2001 From: Charles Fries Date: Tue, 23 Apr 2024 10:08:39 -0700 Subject: [PATCH] Add serializer test --- .../cloud-firestore-modular-test.ts | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/unit/serializers/cloud-firestore-modular-test.ts b/tests/unit/serializers/cloud-firestore-modular-test.ts index f3e07345..3ab4e005 100644 --- a/tests/unit/serializers/cloud-firestore-modular-test.ts +++ b/tests/unit/serializers/cloud-firestore-modular-test.ts @@ -1,6 +1,8 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; +import CloudFirestoreSerializer from 'ember-cloud-firestore-adapter/serializers/cloud-firestore-modular'; + module('Unit | Serializer | cloud-firestore modular', function (hooks) { setupTest(hooks); @@ -31,5 +33,34 @@ module('Unit | Serializer | cloud-firestore modular', function (hooks) { }); }); + module('extractRelationships()', function () { + test('should return object containing manyToMany and manyToOne links', function (assert) { + // Arrange + const serializer = this.owner.lookup('serializer:cloud-firestore-modular') as CloudFirestoreSerializer; + const store = this.owner.lookup('service:store'); + serializer.store = store; // TODO: injected store on serializer is undefined in tests + + // Act + const result = serializer.extractRelationships(store.modelFor('user'), { + id: 'user_a', + links: {}, + }); + + // Assert + assert.deepEqual(result, { + groups: { + links: { + related: 'users/user_a/groups', + }, + }, + posts: { + links: { + related: 'posts', + }, + }, + }); + }); + }); + // NOTE: Other public methods are hard to test because they rely on private APIs from ember-data });