diff --git a/app/controllers/admin/registrars_controller.rb b/app/controllers/admin/registrars_controller.rb index d29ce40d3..cd936a15c 100644 --- a/app/controllers/admin/registrars_controller.rb +++ b/app/controllers/admin/registrars_controller.rb @@ -62,7 +62,7 @@ class Admin::RegistrarsController < AdminController def registrar_params params.require(:registrar).permit( :name, :reg_no, :vat_no, :street, :city, :state, :zip, :billing_address, - :country_code, :email, :phone, :billing_email, :code, :test_registrar + :country_code, :email, :phone, :website, :billing_email, :code, :test_registrar ) end end diff --git a/app/models/registrar.rb b/app/models/registrar.rb index 162aef292..55581e3b8 100644 --- a/app/models/registrar.rb +++ b/app/models/registrar.rb @@ -12,7 +12,7 @@ class Registrar < ActiveRecord::Base has_many :priv_contacts, -> { privs }, class_name: 'Contact' has_many :white_ips, dependent: :destroy - delegate :balance, to: :cash_account + delegate :balance, to: :cash_account, allow_nil: true validates :name, :reg_no, :country_code, :email, :code, presence: true validates :name, :reg_no, :reference_no, :code, uniqueness: true diff --git a/app/views/admin/registrars/_form.haml b/app/views/admin/registrars/_form.haml index 6f80abba6..d62a375f8 100644 --- a/app/views/admin/registrars/_form.haml +++ b/app/views/admin/registrars/_form.haml @@ -27,6 +27,11 @@ = f.label :phone .col-md-7 = f.text_field(:phone, class: 'form-control') + .form-group + .col-md-4.control-label + = f.label :website + .col-md-7 + = f.url_field :website, class: 'form-control' .form-group .col-md-4.control-label = f.label :email diff --git a/app/views/admin/registrars/show.haml b/app/views/admin/registrars/show.haml index 4ea74029e..1907a63ed 100644 --- a/app/views/admin/registrars/show.haml +++ b/app/views/admin/registrars/show.haml @@ -39,6 +39,9 @@ %dt= t(:credit_balance) %dd= @registrar.balance + %dt= Registrar.human_attribute_name :website + %dd= @registrar.website + .col-md-6 .panel.panel-default .panel-heading diff --git a/spec/requests/admin/registrars/create_spec.rb b/spec/requests/admin/registrars/create_spec.rb new file mode 100644 index 000000000..e144b19f8 --- /dev/null +++ b/spec/requests/admin/registrars/create_spec.rb @@ -0,0 +1,24 @@ +require 'rails_helper' + +RSpec.describe 'admin registrar create' do + subject(:registrar) { Registrar.first } + + before :example do + sign_in_to_admin_area + end + + it 'creates new registrar' do + expect { post admin_registrars_path, registrar: attributes_for(:registrar) } + .to change { Registrar.count }.from(0).to(1) + end + + it 'saves website' do + post admin_registrars_path, { registrar: attributes_for(:registrar, website: 'test') } + expect(registrar.website).to eq('test') + end + + it 'redirects to :show' do + post admin_registrars_path, { registrar: attributes_for(:registrar) } + expect(response).to redirect_to admin_registrar_path(registrar) + end +end diff --git a/spec/requests/admin/registrars/update_spec.rb b/spec/requests/admin/registrars/update_spec.rb new file mode 100644 index 000000000..fc99bccd0 --- /dev/null +++ b/spec/requests/admin/registrars/update_spec.rb @@ -0,0 +1,24 @@ +require 'rails_helper' + +RSpec.describe 'admin registrar update' do + before :example do + sign_in_to_admin_area + end + + it 'updates website' do + registrar = create(:registrar, website: 'test') + + patch admin_registrar_path(registrar), registrar: attributes_for(:registrar, website: 'new-website') + registrar.reload + + expect(registrar.website).to eq('new-website') + end + + it 'redirects to :show' do + registrar = create(:registrar) + + patch admin_registrar_path(registrar), { registrar: attributes_for(:registrar) } + + expect(response).to redirect_to admin_registrar_path(registrar) + end +end diff --git a/spec/views/admin/registrars/_form.haml_spec.rb b/spec/views/admin/registrars/_form.haml_spec.rb new file mode 100644 index 000000000..98021d93a --- /dev/null +++ b/spec/views/admin/registrars/_form.haml_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +RSpec.describe 'admin/registrars/_form' do + let(:registrar) { build_stubbed(:registrar) } + + before :example do + assign(:registrar, registrar) + stub_template 'shared/_full_errors' => '' + end + + it 'has website' do + render + expect(rendered).to have_css('[name="registrar[website]"]') + end +end diff --git a/spec/views/admin/registrars/show.haml_spec.rb b/spec/views/admin/registrars/show.haml_spec.rb new file mode 100644 index 000000000..6ec9cab14 --- /dev/null +++ b/spec/views/admin/registrars/show.haml_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +RSpec.describe 'admin/registrars/show' do + let(:registrar) { build_stubbed(:registrar, website: 'test website') } + + before :example do + assign(:registrar, registrar) + stub_template 'shared/_title' => '' + end + + it 'has website' do + render + expect(rendered).to have_text('test website') + end +end