From ea4397e4e0d786554fc957840e623e0800a75b45 Mon Sep 17 00:00:00 2001 From: Cory Forsyth Date: Wed, 15 Nov 2017 13:48:20 -0500 Subject: [PATCH] [DOC beta] Assert that both modelName and id are passed to `peekRecord` (#4998) Adds expectAssertion test for the new assertion, as well as an expectAssertion test for the existing assertion that a model name (string) must be passed instead of a model class. (cherry picked from commit 1d68d9ab922ce46ad57404ef2f446454c30947ad) --- addon/-private/system/store.js | 1 + tests/unit/store/peek-record-test.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/addon/-private/system/store.js b/addon/-private/system/store.js index 94bb7dee20d..d26f2706876 100644 --- a/addon/-private/system/store.js +++ b/addon/-private/system/store.js @@ -1034,6 +1034,7 @@ Store = Service.extend({ peekRecord(modelName, id) { heimdall.increment(peekRecord); assert(`You need to pass a model name to the store's peekRecord method`, isPresent(modelName)); + assert(`You need to pass both a model name and id to the store's peekRecord method`, isPresent(modelName) && isPresent(id)); assert(`Passing classes to store methods has been removed. Please pass a dasherized string instead of ${modelName}`, typeof modelName === 'string'); let normalizedModelName = normalizeModelName(modelName); diff --git a/tests/unit/store/peek-record-test.js b/tests/unit/store/peek-record-test.js index 1d5ec9433f5..4e92782bdd6 100644 --- a/tests/unit/store/peek-record-test.js +++ b/tests/unit/store/peek-record-test.js @@ -1,5 +1,7 @@ import { run } from '@ember/runloop'; import setupStore from 'dummy/tests/helpers/store'; +import Ember from 'ember'; +import testInDebug from 'dummy/tests/helpers/test-in-debug'; import { module, test } from 'qunit'; @@ -40,3 +42,20 @@ test('peekRecord should return null if the record is not in the store ', functio assert.equal(null, store.peekRecord('person', 1), 'peekRecord returns null if the corresponding record is not in the store'); }); }); + +testInDebug('peekRecord should assert if not passed both model name and id', function(assert) { + run(() => { + assert.expectAssertion(() => { + store.peekRecord('my-id'); + }, /You need to pass both a model name and id/); + }); +}); + +testInDebug('peekRecord should assert if passed a model class instead of model name', function(assert) { + run(() => { + assert.expectAssertion(() => { + let modelClass = Ember.Object.extend(); + store.peekRecord(modelClass, 'id'); + }, /Passing classes to store methods has been removed/); + }); +});