В настоящее время я пишу тесты для своего приложения, написанного с помощью EmberJS. Я использую Мираж. У меня есть две следующие модели:
мираж/модели/paperwork.js
export default Model.extend({
customer: belongsTo('customer'),
paperwork_products: hasMany('paperwork-product', { inverse: 'paperwork' }),
мираж/модели/документы-product.js
export default Model.extend({
paperwork: belongsTo('paperwork', { inverse: 'paperwork_products' }),
});
В моем сценарии я создаю свои данные следующим образом:
const paperwork = server.create('paperwork');
const paperworkProduct = server.create('paperwork-product', { paperwork });
paperwork.paperwork_products.add(paperworkProduct);
Мой маршрут:
export default ApplicationRoute.extend({
model(params) {
return this.store.findRecord('paperwork', params.paperwork_id, { include: 'paperwork_products' }),
},
});
Проблема в том, что я не могу получить доступ к paperwork.paperwork_products в своем шаблоне. Он не определен (здесь указаны другие атрибуты оформления документов, но не отношения). Я уже даже пробовал ставить отладчик в свой mirage/config.js при объявлении маршрутов. Мои документы существуют, и его "документы_продукты" тоже. Но я не могу получить данные paperwork_products в своем шаблоне. Что я делаю не так ? Я думаю, что я должен что-то изменить в моем:
this.get('v1/paperworks/:id');
Но я не знаю, что... Заранее спасибо!
Редактировать: Вот мои настоящие модели Ember:
модели/paperwork.js
export default DS.Model.extend({
customer: DS.belongsTo('customer'),
paperwork_products: DS.hasMany('paperwork-product', { async: true }),
});
модели/документы-product.js
export default DS.Model.extend({
paperwork: DS.belongsTo('paperwork'),
});
Вчера я попытался сравнить реальный ответ JsonApi со своей спины и ответ Mirage, и я увидел, что в хэше отношений мое отношение «paperwork_products» было изменено на paperwork-products (с Mirage). Так что есть проблема с отношениями с подчеркиванием или моделями с тире... В config.js я пробовал издеваться над JSONAPI Backend, и это хорошо работает. Просто заменил «бумажные продукты» на «бумажные_продукты».
Ответ Миража:
"relationships":{
"customer":{
"data":{
"type":"customers",
"id":"1"
}
},
"paperwork-products":{
"data":[
{
"type":"paperwork-products",
"id":"1"
}
]
}
}
Должно быть :
"relationships":{
"customer":{
"data":{
"type":"customers",
"id":"1"
}
},
"paperwork_products":{
"data":[
{
"type":"paperwork_products",
"id":"1"
}
]
}
}
В других моих моделях с отношениями hasMany проблем нет.