1

私の 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 が削除されます。 エラーメッセージ

4

0 に答える 0