Ember cli mirage を使用して、Ember アプリの受け入れテストを作成しています。ログイン用のサーバー応答のモックには成功しましたが、どうやってやったのか満足できません。Ember cli mirage にはルート ハンドラーの短縮形があり、それらを使用したいのですが、試してみるとすべてエラーが発生します (このソリューションを除く)。誰かがこの応答をリファクタリングするのを手伝ってくれますか?
this.post('/login', ({ users, resources })=> {
let user = users.first();
if(!Ember.isEmpty(resources.first())){
return {
data: {
type: 'user',
id: user.id,
attributes: user,
relationships: {
resources: {
data: [
{ id: resources.first().id, type: 'resource' }
]
}
}
},
};
} else {
return {
data: {
type: 'user',
id: user.id,
attributes: user
}
};
}
});
ユーザーとリソースモデルとファクトリの両方が定義されており、ユーザーとリソースモデルでそれらの間の関係があります(多対多の関係です)。テストでユーザーを作成する方法は次のとおりです
test('User can login', function(assert){
let resources = server.createList('resource', 2),
user = server.create('user', {resources: resources});
loginUser(user.email);
andThen(()=>{
assert.ok(find('a:contains("Logout")'));
assert.equal('resource.content', currentPath());
});
});