2016-03-30 14 views
2

我使用json_api适配器并没有指定的键变换明确,因此,我的应用程序使用密钥变换由json_api是提供:dashed密钥转换不是在测试环境中工作active_model_serializers

有一个变量我的串行器名称为access_locked?。 下面是包含管理模式串行代码片段:

#app/serializers/admin_serializer.rb 
class AdminSerializer < ActiveModel::Serializer 
    attributes :id, :email, :access_locked? 
end 

在开发环境中,我得到正确的管理JSON值作为access-locked?,即underscore_被连字符

但我rspec的更换测试用例失败,因为序列化管理包含access_locked?代替access-locked?

两个test.rbactive_model_serializers.rb但没有成功使用ActiveModelSerializers.config.key_transform = :unaltered尝试。

宝石版本gem 'active_model_serializers', '0.10.0rc4' 这里是失败的RSpec的:

#features/dashboard/admins/admins_index_spec.rb 

scenario 'admin sees all other admins', :js => true do 
    signin_admin(@admin.email, @admin.password) 
    expect(page).to have_content I18n.t 'devise.sessions.signed_in' 
    click_link 'Settings' 
    click_link 'Admins' 
    expect(page).to have_content @admin.email 
    expect(page).to have_content @admin1.email 
    expect(page).to have_content @admin2.email 

    expect(page).to have_selector('#admin-row-1 .glyphicon-ban-circle') 
#TODO failing because of http://stackoverflow.com/questions/36312019/key-transform-not-working-in-test-environment-for-active-model-serializers 
    expect(page).to have_selector('#admin-row-2 .glyphicon-ok-circle') 
    expect(page).to have_selector('#admin-row-3 .glyphicon-ban-circle') 
    expect(page).to have_selector('#admin-row-1 .glyphicon-edit') 
    expect(page).to have_selector('#admin-row-3 .glyphicon-trash') 
    find('#admin-row-3 .glyphicon-edit').click 
    expect(page).to have_selector('#admin-row-3 .glyphicon-check') 
    expect(page).to have_selector('#admin-row-3 .glyphicon-remove') 
    find('#admin-row-3 .glyphicon-check').click 
    expect(page).to have_selector('#admin-row-3 .glyphicon-trash') 
    find('#admin-row-1 .glyphicon-ban-circle').click 
    expect(page).to have_css('.modal', text: 'Lock Admin?') 
    find('.btn-primary.confirm').click 
    expect(page).to have_content "Can't lock yourself." 
    find('#admin-row-2 .glyphicon-ok-circle').click 
    expect(page).to have_css('.modal', text: 'Unlock Admin?') 
    find('.btn-primary.confirm').click 
    expect(page).to have_selector('#admin-row-2 .glyphicon-ban-circle') 
    end 

回答

0

指了指掌握的宝石,它解决了这个问题:

gem 'active_model_serializers', github: 'rails-api/active_model_serializers', branch: :master 
1

在这一点上可能的解决,但以防万一。 ..我想你想用ActiveModelSerializers.config.key_transform = :dash而不是:unaltered