From 878748836fef8db9d414c7c5d768d17297f6bc84 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 2 Jan 2017 13:02:50 +0200 Subject: [PATCH] Hide address form fields when adding/editing contact in registrar area #290 --- app/views/registrar/contacts/_form.haml | 9 ++-- .../contacts/form_partials/_address.haml | 21 ++++---- .../registrar/contacts/_form.haml_spec.rb | 38 ++++++++++++++ .../form_partials/_address.haml_spec.rb | 51 ------------------- 4 files changed, 54 insertions(+), 65 deletions(-) create mode 100644 spec/views/registrar/contacts/_form.haml_spec.rb delete mode 100644 spec/views/registrar/contacts/form_partials/_address.haml_spec.rb diff --git a/app/views/registrar/contacts/_form.haml b/app/views/registrar/contacts/_form.haml index 7b3c2df323..f826d06770 100644 --- a/app/views/registrar/contacts/_form.haml +++ b/app/views/registrar/contacts/_form.haml @@ -4,9 +4,12 @@ .row .col-md-8 = render 'registrar/contacts/form_partials/general', f: f -.row - .col-md-8 - = render 'registrar/contacts/form_partials/address', f: f + +- if address_processing? + .row + .col-md-8 + = render 'registrar/contacts/form_partials/address', f: f + - if !@contact.persisted? .row .col-md-8 diff --git a/app/views/registrar/contacts/form_partials/_address.haml b/app/views/registrar/contacts/form_partials/_address.haml index bc91da92c5..1d9ae5869b 100644 --- a/app/views/registrar/contacts/form_partials/_address.haml +++ b/app/views/registrar/contacts/form_partials/_address.haml @@ -4,21 +4,21 @@ .panel-body .form-group .col-md-3.control-label - = f.label :street, t(:street) + = f.label :street, t(:street) + '*' .col-md-7 - = f.text_field :street, class: 'form-control', required: address_processing? + = f.text_field :street, class: 'form-control', required: true .form-group .col-md-3.control-label - = f.label :city, t(:city) + = f.label :city, t(:city) + '*' .col-md-7 - = f.text_field :city, class: 'form-control', required: address_processing? + = f.text_field :city, class: 'form-control', required: true .form-group .col-md-3.control-label - = f.label :zip, t(:zip) + = f.label :zip, t(:zip) + '*' .col-md-7 - = f.text_field :zip, class: 'form-control', required: address_processing? + = f.text_field :zip, class: 'form-control', required: true .form-group .col-md-3.control-label @@ -28,10 +28,9 @@ .form-group .col-md-3.control-label - = f.label :country_code, t(:country) + = f.label :country_code, t(:country) + '*' .col-md-7 - country_selected = f.object.persisted? ? f.object.country_code : 'EE' - = f.select(:country_code, - SortedCountry.all_options(country_selected), - { include_blank: true }, - required: address_processing?) + = f.select(:country_code, SortedCountry.all_options(country_selected), + { include_blank: true }, required: true) + diff --git a/spec/views/registrar/contacts/_form.haml_spec.rb b/spec/views/registrar/contacts/_form.haml_spec.rb new file mode 100644 index 0000000000..307c495e82 --- /dev/null +++ b/spec/views/registrar/contacts/_form.haml_spec.rb @@ -0,0 +1,38 @@ +require 'rails_helper' + +RSpec.describe 'registrar/contacts/_form' do + let(:contact) { instance_spy(Depp::Contact) } + + before :example do + allow(view).to receive(:f).and_return(ActionView::Helpers::FormBuilder.new(:contact, contact, view, {})) + assign(:contact, contact) + + stub_template 'registrar/shared/_error_messages' => '' + stub_template 'registrar/contacts/form_partials/_general' => '' + stub_template 'registrar/contacts/form_partials/_address' => 'address info' + stub_template 'registrar/contacts/form_partials/_code' => '' + stub_template 'registrar/contacts/form_partials/_legal_document' => '' + end + + context 'when address processing is enabled' do + before do + allow(view).to receive(:address_processing?).and_return(true) + end + + it 'has address' do + render + expect(rendered).to have_text('address info') + end + end + + context 'when address processing is disabled' do + before do + allow(view).to receive(:address_processing?).and_return(false) + end + + it 'has no address' do + render + expect(rendered).to_not have_text('address info') + end + end +end diff --git a/spec/views/registrar/contacts/form_partials/_address.haml_spec.rb b/spec/views/registrar/contacts/form_partials/_address.haml_spec.rb deleted file mode 100644 index 990d44b679..0000000000 --- a/spec/views/registrar/contacts/form_partials/_address.haml_spec.rb +++ /dev/null @@ -1,51 +0,0 @@ -require 'rails_helper' - -module RequiredAddressFieldsHelper - def define_field_examples(attr_name) - describe "#{attr_name} field" do - let(:field) { page.find("[name='depp_contact[#{attr_name}]']") } - - context 'when address processing is enabled' do - before do - allow(view).to receive(:address_processing?).and_return(true) - end - - it 'is required' do - render - expect(field[:required]).to eq('required') - end - end - - context 'when address processing is disabled' do - before do - allow(view).to receive(:address_processing?).and_return(false) - end - - it 'is optional' do - render - expect(field[:required]).to be_nil - end - end - end - end -end - -RSpec.describe 'registrar/contacts/form_partials/_address' do - extend RequiredAddressFieldsHelper - let(:contact) { instance_spy(Depp::Contact) } - - before do - allow(view).to receive(:f).and_return(ActionView::Helpers::FormBuilder.new(:depp_contact, contact, view, {})) - end - - required_address_attributes = %i( - street - city - zip - country_code - ) - - required_address_attributes.each do |attr_name| - define_field_examples(attr_name) - end -end