0

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());
  }); 
});
4

1 に答える 1