私の Ember アプリケーションでは、イベントと todo を追加、編集、削除し、todo とイベントを関連付けることができます。バックエンドは Rails アプリケーションです。テストには Mirage を使用します。Mirage のモデルには次の関係があります。
//Mirage event
import { belongsTo, hasMany, Model } from 'ember-cli-mirage';
export default Model.extend({
user: belongsTo('user'),
todos: hasMany('todo')
});
//Mirage todo
import { belongsTo, Model } from 'ember-cli-mirage';
export default Model.extend({
user: belongsTo('user'),
event: belongsTo('event')
});
私の受け入れテストでは、イベントと、イベントとユーザーに関連付けられたいくつかの todo を持つユーザーを作成します。イベント ページにアクセスし、作成されたイベントをクリックします。イベントに関連付けられているすべての Todo を選択して、それらを削除することもできます。しかし、この場合、接続された todo なしでイベントを削除したいだけです。確認してから削除リクエストを開始します。
//acceptance test events-test.js
test('delete event without todo', function(assert) {
const user = server.create('user'),
event = server.create('event', {
user
}),
todos = server.createList('todo', 4, { user, event });
authenticateSession(this.application, {
id: user.id,
token: user.token
});
visit('/events');
andThen(function() {
assert.equal(find('td.fc-event-container').length, 5, 'There should be exactly one Event and four Todo');
assert.equal(currentURL(), '/events', 'currentURL should be /events');
click(find('td.fc-event-container a').eq(0));
andThen(function() {
click('button.delete');
andThen(function() {
click('button.confirm');
andThen(function() {
assert.equal(find('td.fc-event-container').length, 4, 'There should be exactly zero Events but four Todo');
assert.equal(currentURL(), '/events', 'currentURL should be /events');
});
});
});
});
});
config.js の削除ルート:
//Mirage config.js
this.del('/events/:id');
生産的なコードでは、すべてが正常に機能します。しかし、テストでは、作成されたイベントにはリレーションとしての todo がなく、確認後、イベントとちょうど 1 つの todo が削除されます。 エラーメッセージ