@@ -4,6 +4,7 @@ import { settled } from '@ember/test-helpers';
4
4
import { changeset } from 'ember-changeset-validations/helpers/changeset' ;
5
5
import { module , test } from 'qunit' ;
6
6
import { validatePresence , validateLength } from 'ember-changeset-validations/validators' ;
7
+ import { reads } from '@ember/object/computed' ;
7
8
8
9
function validateUnique ( ) {
9
10
return ( _key , newValue ) => {
@@ -80,6 +81,30 @@ module('Unit | Helper | changeset', function() {
80
81
assert . deepEqual ( changesetInstance . get ( 'error' ) . username , expectedError , 'username should error' ) ;
81
82
} ) ;
82
83
84
+ test ( 'it allows to observe changes to validation results on error object' , async function ( assert ) {
85
+ let user = EmberObject . extend ( { name : null } ) . create ( ) ;
86
+ let userValidations = {
87
+ name : [
88
+ validatePresence ( true ) ,
89
+ ] ,
90
+ } ;
91
+ let changesetInstance = changeset ( [ user , userValidations ] ) ;
92
+
93
+ let hostObject = EmberObject . extend ( {
94
+ errorsForName : reads ( 'changeset.error.name.validation' ) ,
95
+ } ) . create ( {
96
+ changeset : changesetInstance ,
97
+ } ) ;
98
+
99
+ changesetInstance . set ( 'name' , 'Max' ) ;
100
+ assert . equal ( changesetInstance . get ( 'error' ) . name , undefined , 'get validation error directly' ) ;
101
+ assert . equal ( hostObject . errorsForName , undefined , 'get validation error through alias on host object' ) ;
102
+
103
+ changesetInstance . set ( 'name' , null ) ;
104
+ assert . deepEqual ( changesetInstance . get ( 'error' ) . name . validation , [ "[CUSTOM] Name can't be blank" ] , 'get validation error directly' ) ;
105
+ assert . deepEqual ( hostObject . errorsForName , [ "[CUSTOM] Name can't be blank" ] , 'get validation error through alias on host object' ) ;
106
+ } ) ;
107
+
83
108
test ( 'it passes the original object into validators' , async function ( assert ) {
84
109
let User = EmberObject . extend ( {
85
110
firstName : null ,
0 commit comments