From 1ed7c7c95bbd5bdb9ad6b72fbb6c54211a0128d2 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Fri, 21 Apr 2017 14:59:54 +0300 Subject: [PATCH] Add admin zone specs #475 --- spec/requests/admin/dns/zones/create_spec.rb | 36 +++++++++++++++++ spec/requests/admin/dns/zones/destroy_spec.rb | 18 +++++++++ spec/requests/admin/dns/zones/update_spec.rb | 40 +++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 spec/requests/admin/dns/zones/create_spec.rb create mode 100644 spec/requests/admin/dns/zones/destroy_spec.rb create mode 100644 spec/requests/admin/dns/zones/update_spec.rb diff --git a/spec/requests/admin/dns/zones/create_spec.rb b/spec/requests/admin/dns/zones/create_spec.rb new file mode 100644 index 000000000..135326737 --- /dev/null +++ b/spec/requests/admin/dns/zones/create_spec.rb @@ -0,0 +1,36 @@ +require 'rails_helper' + +RSpec.describe 'admin zone create' do + subject(:zone) { DNS::Zone.first } + + before :example do + sign_in_to_admin_area + end + + it 'creates new zone' do + expect { post admin_zones_path, zone: attributes_for(:zone) } + .to change { DNS::Zone.count }.from(0).to(1) + end + + text_attributes = %i[origin email master_nameserver] + integer_attributes = %i[ttl refresh retry expire minimum_ttl] + + text_attributes.each do |attr_name| + it "saves #{attr_name}" do + post admin_zones_path, { zone: attributes_for(:zone, attr_name => 'test') } + expect(zone.send(attr_name)).to eq('test') + end + end + + integer_attributes.each do |attr_name| + it "saves #{attr_name}" do + post admin_zones_path, { zone: attributes_for(:zone, attr_name => '1') } + expect(zone.send(attr_name)).to eq(1) + end + end + + it 'redirects to :index' do + post admin_zones_path, { zone: attributes_for(:zone) } + expect(response).to redirect_to admin_zones_url + end +end diff --git a/spec/requests/admin/dns/zones/destroy_spec.rb b/spec/requests/admin/dns/zones/destroy_spec.rb new file mode 100644 index 000000000..37bf44a21 --- /dev/null +++ b/spec/requests/admin/dns/zones/destroy_spec.rb @@ -0,0 +1,18 @@ +require 'rails_helper' + +RSpec.describe 'admin zone destroy' do + let!(:zone) { create(:zone) } + + before :example do + sign_in_to_admin_area + end + + it 'deletes zone' do + expect { delete admin_zone_path(zone) }.to change { DNS::Zone.count }.from(1).to(0) + end + + it 'redirects to :index' do + delete admin_zone_path(zone) + expect(response).to redirect_to admin_zones_url + end +end diff --git a/spec/requests/admin/dns/zones/update_spec.rb b/spec/requests/admin/dns/zones/update_spec.rb new file mode 100644 index 000000000..5167a4c7d --- /dev/null +++ b/spec/requests/admin/dns/zones/update_spec.rb @@ -0,0 +1,40 @@ +require 'rails_helper' + +RSpec.describe 'admin zone update' do + before :example do + sign_in_to_admin_area + end + + text_attributes = %i[origin email master_nameserver] + integer_attributes = %i[ttl refresh retry expire minimum_ttl] + + text_attributes.each do |attr_name| + it "updates #{attr_name}" do + zone = create(:zone, attr_name => 'test') + + patch admin_zone_path(zone), zone: attributes_for(:zone, attr_name => 'new-test') + zone.reload + + expect(zone.send(attr_name)).to eq('new-test') + end + end + + integer_attributes.each do |attr_name| + it "updates #{attr_name}" do + zone = create(:zone, attr_name => '1') + + patch admin_zone_path(zone), zone: attributes_for(:zone, attr_name => '2') + zone.reload + + expect(zone.send(attr_name)).to eq(2) + end + end + + it 'redirects to :index' do + zone = create(:zone) + + patch admin_zone_path(zone), { zone: attributes_for(:zone) } + + expect(response).to redirect_to admin_zones_url + end +end