Skip to content

Commit 5bc0401

Browse files
committed
Remove DS import in model-relationships tests
Instead of the DS.PromiseObject and DS.PromiseArray we now test against a real ember data model. Both `sync` and `async` behaviors are covered now.
1 parent 0599dff commit 5bc0401

1 file changed

Lines changed: 90 additions & 16 deletions

File tree

tests/integration/validations/model-relationships-test.js

Lines changed: 90 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import ArrayProxy from '@ember/array/proxy';
33
import EmberObject from '@ember/object';
44
import { isNone } from '@ember/utils';
55
import { A as emberArray } from '@ember/array';
6-
import DS from 'ember-data';
6+
import Model, { belongsTo, hasMany } from '@ember-data/model';
77
import setupObject from '../../helpers/setup-object';
88
import DefaultMessages from 'dummy/validators/messages';
99
import BelongsToValidator from 'ember-cp-validations/validators/belongs-to';
@@ -508,16 +508,22 @@ module('Integration | Validations | Model Relationships', function (hooks) {
508508
assert.true(user.get('validations.attrs.fullName.isValid'));
509509
});
510510

511-
test('presence on empty DS.PromiseObject', function (assert) {
511+
test('presence on empty belongsTo - sync', function (assert) {
512512
this.owner.register('validator:presence', PresenceValidator);
513+
this.owner.register(
514+
'model:user',
515+
Model.extend(
516+
buildValidations({
517+
friend: validator('presence', true),
518+
}),
519+
{
520+
friend: belongsTo('user', { async: false, inverse: null }),
521+
}
522+
)
523+
);
513524

514-
let Validations = buildValidations({
515-
friend: validator('presence', true),
516-
});
517-
518-
let user = setupObject(this, EmberObject.extend(Validations), {
519-
friend: DS.PromiseObject.create(),
520-
});
525+
const store = this.owner.lookup('service:store');
526+
const user = store.createRecord('user');
521527

522528
let { validations, model } = user.get('validations').validateSync();
523529

@@ -533,16 +539,53 @@ module('Integration | Validations | Model Relationships', function (hooks) {
533539
assert.strictEqual(friend.get('message'), "This field can't be blank");
534540
});
535541

536-
test('presence on empty DS.PromiseArray', function (assert) {
542+
test('presence on empty belongsTo - async', async function (assert) {
537543
this.owner.register('validator:presence', PresenceValidator);
544+
this.owner.register(
545+
'model:user',
546+
Model.extend(
547+
buildValidations({
548+
friend: validator('presence', true),
549+
}),
550+
{
551+
friend: belongsTo('user', { async: true, inverse: null }),
552+
}
553+
)
554+
);
538555

539-
let Validations = buildValidations({
540-
friends: validator('presence', true),
541-
});
556+
const store = this.owner.lookup('service:store');
557+
const user = store.createRecord('user');
542558

543-
let user = setupObject(this, EmberObject.extend(Validations), {
544-
friends: DS.PromiseArray.create(),
545-
});
559+
let { validations, model } = await user.get('validations').validate();
560+
561+
assert.strictEqual(model, user, 'expected model to be the correct model');
562+
assert.deepEqual(
563+
validations.get('content').getEach('attribute').sort(),
564+
['friend'].sort()
565+
);
566+
567+
let friend = validations.get('content').findBy('attribute', 'friend');
568+
569+
assert.false(friend.get('isValid'));
570+
assert.strictEqual(friend.get('message'), "This field can't be blank");
571+
});
572+
573+
test('presence on empty hasMany - sync', function (assert) {
574+
this.owner.register('validator:presence', PresenceValidator);
575+
this.owner.register(
576+
'model:user',
577+
Model.extend(
578+
buildValidations({
579+
friends: validator('presence', true),
580+
}),
581+
{
582+
friends: hasMany('user', { async: false, inverse: null }),
583+
}
584+
)
585+
);
586+
587+
const store = this.owner.lookup('service:store');
588+
const user = store.createRecord('user');
546589

547590
let { validations, model } = user.get('validations').validateSync();
548591

@@ -558,6 +601,37 @@ module('Integration | Validations | Model Relationships', function (hooks) {
558601
assert.strictEqual(friends.get('message'), "This field can't be blank");
559602
});
560603

604+
test('presence on empty hasMany - async', async function (assert) {
605+
this.owner.register('validator:presence', PresenceValidator);
606+
this.owner.register(
607+
'model:user',
608+
Model.extend(
609+
buildValidations({
610+
friends: validator('presence', true),
611+
}),
612+
{
613+
friends: hasMany('user', { async: true, inverse: null }),
614+
}
615+
)
616+
);
617+
618+
const store = this.owner.lookup('service:store');
619+
const user = store.createRecord('user');
620+
621+
let { validations, model } = await user.get('validations').validate();
622+
623+
assert.strictEqual(model, user, 'expected model to be the correct model');
624+
assert.deepEqual(
625+
validations.get('content').getEach('attribute').sort(),
626+
['friends'].sort()
627+
);
628+
629+
let friends = validations.get('content').findBy('attribute', 'friends');
630+
631+
assert.false(friends.get('isValid'));
632+
assert.strictEqual(friends.get('message'), "This field can't be blank");
633+
});
634+
561635
test('debounce should work across nested HasMany relationships', function (assert) {
562636
this.owner.register('validator:presence', PresenceValidator);
563637
this.owner.register('validator:has-many', HasManyValidator);

0 commit comments

Comments
 (0)