From 77510cc3fa49554a9c01fcf63d95093a9be1b937 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Mon, 29 Sep 2014 15:54:02 +0300 Subject: [PATCH] Handle OK status automatically --- app/models/domain.rb | 9 +++++++++ spec/epp/domain_spec.rb | 11 +++++++++-- spec/models/domain_spec.rb | 2 +- spec/models/ns_set_spec.rb | 6 ------ spec/models/registrar_spec.rb | 1 - 5 files changed, 19 insertions(+), 10 deletions(-) delete mode 100644 spec/models/ns_set_spec.rb diff --git a/app/models/domain.rb b/app/models/domain.rb index 41ce80063..d73d630bb 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -36,6 +36,7 @@ class Domain < ActiveRecord::Base before_create :generate_auth_info before_create :set_validity_dates after_create :attach_default_contacts + after_save :manage_automatic_statuses validates :name_dirty, domain_name: true, uniqueness: true validates :period, numericality: { only_integer: true } @@ -201,6 +202,14 @@ class Domain < ActiveRecord::Base domain_contacts.reject(&:marked_for_destruction?).select { |x| x.contact_type == DomainContact::ADMIN }.count end + def manage_automatic_statuses + if domain_statuses.empty? && valid? + domain_statuses.create(value: DomainStatus::OK) + else + domain_statuses.find_by(value: DomainStatus::OK).try(:destroy) + end + end + class << self def convert_period_to_time(period, unit) return period.to_i.days if unit == 'd' diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index db619366d..86ab9e234 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -366,10 +366,17 @@ describe 'EPP Domain', epp: true do expect(response[:results][0][:value]).to eq('4') end + it 'sets ok status by default' do + response = epp_request(domain_info_xml, :xml) + inf_data = response[:parsed].css('resData infData') + expect(inf_data.css('status').first[:s]).to eq('ok') + end + it 'returns domain info' do d = Domain.first - d.domain_statuses.create(value: DomainStatus::CLIENT_HOLD, description: 'Payment overdue.') - d.nameservers.create(hostname: 'ns1.example.com', ipv4: '192.168.1.1', ipv6: '1080:0:0:0:8:800:200C:417A') + d.domain_statuses.build(value: DomainStatus::CLIENT_HOLD, description: 'Payment overdue.') + d.nameservers.build(hostname: 'ns1.example.com', ipv4: '192.168.1.1', ipv6: '1080:0:0:0:8:800:200C:417A') + d.save response = epp_request(domain_info_xml, :xml) expect(response[:results][0][:result_code]).to eq('1000') diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index e11883d87..209a862fc 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' describe Domain do it { should belong_to(:registrar) } - it { should have_and_belong_to_many(:nameservers) } + it { should have_many(:nameservers) } it { should belong_to(:owner_contact) } it { should have_many(:tech_contacts) } it { should have_many(:admin_contacts) } diff --git a/spec/models/ns_set_spec.rb b/spec/models/ns_set_spec.rb deleted file mode 100644 index 83d7035f3..000000000 --- a/spec/models/ns_set_spec.rb +++ /dev/null @@ -1,6 +0,0 @@ -require 'rails_helper' - -describe NsSet do - it { should belong_to(:registrar) } - it { should have_and_belong_to_many(:nameservers) } -end diff --git a/spec/models/registrar_spec.rb b/spec/models/registrar_spec.rb index 893959039..196857582 100644 --- a/spec/models/registrar_spec.rb +++ b/spec/models/registrar_spec.rb @@ -3,7 +3,6 @@ require 'rails_helper' describe Registrar do it { should belong_to(:country) } it { should have_many(:domains) } - it { should have_many(:ns_sets) } it { should have_many(:epp_users) } it { should have_many(:users) } end