|
| 1 | +require 'spec_helper' |
| 2 | + |
| 3 | +RSpec.describe 'Boolean field', type: :request do |
| 4 | + subject { page } |
| 5 | + let(:field_test) { FactoryBot.create :field_test } |
| 6 | + |
| 7 | + context 'if nullable' do |
| 8 | + before do |
| 9 | + RailsAdmin.config FieldTest do |
| 10 | + field :boolean_field |
| 11 | + end |
| 12 | + end |
| 13 | + |
| 14 | + it 'shows 3 radio buttons' do |
| 15 | + visit new_path(model_name: 'field_test') |
| 16 | + is_expected.to have_content 'New Field test' |
| 17 | + expect(all('[name="field_test[boolean_field]"]').map { |e| e['value'] }).to eq ['1', '0', ''] |
| 18 | + end |
| 19 | + |
| 20 | + it 'can be updated' do |
| 21 | + visit edit_path(model_name: 'field_test', id: field_test.id) |
| 22 | + find('.boolean_type .icon-ok').sibling('input').click |
| 23 | + click_button 'Save and edit' |
| 24 | + expect(field_test.reload.boolean_field).to be true |
| 25 | + find('.boolean_type .icon-remove').sibling('input').click |
| 26 | + click_button 'Save and edit' |
| 27 | + expect(field_test.reload.boolean_field).to be false |
| 28 | + find('.boolean_type .icon-minus').sibling('input').click |
| 29 | + click_button 'Save and edit' |
| 30 | + expect(field_test.reload.boolean_field).to be nil |
| 31 | + end |
| 32 | + end |
| 33 | + |
| 34 | + context 'if not nullable' do |
| 35 | + before do |
| 36 | + RailsAdmin.config FieldTest do |
| 37 | + field :boolean_field do |
| 38 | + nullable false |
| 39 | + end |
| 40 | + end |
| 41 | + end |
| 42 | + |
| 43 | + it 'shows a checkbox' do |
| 44 | + visit new_path(model_name: 'field_test') |
| 45 | + is_expected.to have_content 'New Field test' |
| 46 | + is_expected.to have_css '[type="checkbox"][name="field_test[boolean_field]"]' |
| 47 | + end |
| 48 | + |
| 49 | + it 'can be updated' do |
| 50 | + visit edit_path(model_name: 'field_test', id: field_test.id) |
| 51 | + find('.boolean_type input').check |
| 52 | + click_button 'Save and edit' |
| 53 | + expect(field_test.reload.boolean_field).to be true |
| 54 | + find('.boolean_type input').uncheck |
| 55 | + click_button 'Save and edit' |
| 56 | + expect(field_test.reload.boolean_field).to be false |
| 57 | + end |
| 58 | + end |
| 59 | +end |
0 commit comments