2015-04-01 4 views
1

У меня есть простой класс activeadmin который выглядит следующим образом:Каков наилучший способ проверить классы activeadmin?

ActiveAdmin.register Post do 
    actions :index 

    index do 
    index_columns 
    end 

    csv do 
    index_columns 
    end 

    def index_columns 
    column "Id" do |sp| 
     sp.id 
    end 
    end 
end 

Как будет лучше, чтобы проверить этот код? Напишите некоторые спецификации интеграции с capybara или, может быть, есть другой способ?

ответ

1

Общая идея, связанная с функциональностью тестирующего драгоценного камня - , вы не проверяете ее.

Драгоценные камни (обычно) уже протестированы.

+2

ВЫ ДОЛЖНЫ проверить свою собственную конфигурацию. Вы пишете что-то, используя активный admin dsl, и каждый раз, когда он отличается, вы точно это проверяете. Особенно, когда у вас есть пользовательская логика в контроллере. – Fedcomp

+1

@Fedcomp Я думаю, вам понравится думать о том, что я написал. Я снова пойду: ** ВЫ НЕ ПРОВЕРЬТЕ драгоценные камни ПЕРИОД:) ** Вы проверяете свою логику (надеюсь), но это не имеет ничего общего с драгоценными камнями. Тестирование классов драгоценных камней означает возиться с внутренними компонентами драгоценных камней - это нехорошая идея. –

+0

Тестирование вашей логики OWN (которая в основном использует dsl) означает, что ВАША функциональность не сломается. «период» – Fedcomp

0

Я согласен с Андреем, но мне нужно сделать это для работы. Вот как я тестировал часть csv.

@csv_doc = StringIO.new  

    allow_any_instance_of(ActiveAdmin::ResourceController).to receive(:stream_resource) do |aa_controller| 
    receiver = [] 
    # it's ok to mock this because it's literally their code: https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/resource_controller/streaming.rb#L38 
    aa_controller.class.active_admin_config.csv_builder.build(aa_controller, receiver) 
    receiver.each do |fees_as_csv| 
     @csv_doc << fees_as_csv 
    end 
    end 


    @csv_doc.rewind 
    csv_string = @csv_doc.readlines.join 
    csv = CSV.parse(csv_string, headers: true).map(&:to_hash) 

    expect(csv[0]["FIGURING THIS OUT"]).to eq "SUCKED" 
Смежные вопросы