adopted-ember-addons / adopted-ember-addons/ember-cp-validations
Has-many relationship propagates 'messages' property but not 'errors' property
- Langage dominant
- JavaScript
- Étoiles
- 439
- Forks
- 172
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
### Environment
- Ember Version: 3.16
- Ember CLI Version: 3.16?
- Ember CP Validations Version: 4.0.0-beta.10
### Steps to Reproduce
Here is our setup, with doubly-nested classes. It _might_ reproduce with only a single layer of nesting, though:
outerClass:
```
buildValidations({
middleClass: validator('has-many'),
});
```
middleClass:
```
buildValidations({
innerClass: validator('has-many'),
});
```
innerClass:
```
buildValidations({
value: validator('presence', { presence: true }),
});
```
---
Here is what the data looks like:
```
///////////////////////////////////
// outerClass validations
///////////////////////////////////
this.get('outerClass.validations.isValid')
> false
this.get('outerClass.validations.messages')
> ["This field can't be blank"]
this.get('outerClass.validations.errors')
> []
///////////////////////////////////
// Access middleClass through validations.attrs
///////////////////////////////////
this.get('outerClass.validations.attrs.middleClass.isValid')
> false
this.get('outerClass.validations.attrs.middleClass.messages')
> ["This field can't be blank"]
this.get('outerClass.validations.attrs.middleClass.message')
> "This field can't be blank"
this.get('outerClass.validations.attrs.middleClass.errors')
> []
this.get('outerClass.validations.attrs.middleClass.error')
> undefined
///////////////////////////////////
// Access middleClass directly:
///////////////////////////////////
this.get('outerClass.middleClass.0.validations.messages')
> ["This field can't be blank"]
this.get('outerClass.middleClass.0.validations.errors')
> []
///////////////////////////////////
// Access innerClass through middleClass.validations.attrs
///////////////////////////////////
this.get('outerClass.middleClass.0.validations.attrs.innerClass.messages')
> ["This field can't be blank"]
this.get('outerClass.middleClass.0.validations.attrs.innerClass.errors')
> []
///////////////////////////////////
// Access innerClass directly
///////////////////////////////////
this.get('outerClass.middleClass.0.innerClass.0.validations.messages')
> ["This field can't be blank"]
this.get('outerClass.middleClass.0.innerClass.0.validations.errors')
> [Class]
```
As you can see, the `innerClass` has an error on it, but the `hasMany` is not propagating it.
Based on [the documentation](https://rawgit.com/offirgolan/ember-cp-validations/c4123c983e54f24dd790ffa1bad66cfdf2f47ec6/docs/classes/ResultCollection.html#property_errors), it shouldn't be possible for `errors` to be empty but `messages` non-empty. In fact, based on (what I assume is) [the code](https://github.com/offirgolan/ember-cp-validations/blob/v4.0.0-beta.10/addon/-private/internal-result-object.js#L42-L52), it looks like `error` shouldn't ever be `undefined`
Guide de contribution
Ouvrir le guide de contribution
Évaluation
Cette issue n'a pas encore été évaluée.