diff --git a/packages/-ember-data/tests/integration/store-test.js b/packages/-ember-data/tests/integration/store-test.js index 78637538335..8855814a142 100644 --- a/packages/-ember-data/tests/integration/store-test.js +++ b/packages/-ember-data/tests/integration/store-test.js @@ -494,6 +494,56 @@ module('integration/store - findRecord', function (hooks) { assert.strictEqual(car1, car2, 'we receive the same car back'); }); + test('store#findRecord does not cache the inflight requests when includes differ', async function (assert) { + assert.expect(2); + + let calls = 0; + let resolveHandler; + let result = { + data: { + type: 'car', + id: '1', + attributes: { + make: 'BMC', + model: 'Mini', + }, + }, + }; + + const testAdapter = DS.JSONAPIAdapter.extend({ + shouldReloadRecord(store, type, id, snapshot) { + assert.ok(false, 'shouldReloadRecord should not be called when { reload: true }'); + }, + async findRecord() { + calls++; + + return new Promise((resolve) => { + resolveHandler = resolve; + }); + }, + }); + + this.owner.register('adapter:application', testAdapter); + this.owner.register('serializer:application', JSONAPISerializer.extend()); + let firstPromise, secondPromise; + + run(() => { + firstPromise = store.findRecord('car', '1', { include: 'driver' }); + }); + + run(() => { + secondPromise = store.findRecord('car', '1', { include: 'engine' }); + }); + + assert.strictEqual(calls, 2, 'We made two calls to findRecord'); + + resolveHandler(result); + let car1 = await firstPromise; + let car2 = await secondPromise; + + assert.strictEqual(car1, car2, 'we receive the same car back'); + }); + test('store#findRecord { backgroundReload: false } returns cached record and does not reload in the background', async function (assert) { assert.expect(2);