diff --git a/app/models/domain.rb b/app/models/domain.rb index 85f9d99d6..00aea6d17 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -301,7 +301,7 @@ class Domain < ActiveRecord::Base def manage_automatic_statuses if domain_statuses.empty? && valid? domain_statuses.create(value: DomainStatus::OK) - else + elsif domain_statuses.length > 1 || !valid? domain_statuses.find_by(value: DomainStatus::OK).try(:destroy) end end diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index fa792d37f..2ea9efe9a 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -95,6 +95,28 @@ describe Domain do d = Fabricate(:domain) expect(d.auth_info).to_not be_empty end + + it 'manages statuses automatically' do + d = Fabricate(:domain) + expect(d.domain_statuses.count).to eq(1) + expect(d.domain_statuses.first.value).to eq(DomainStatus::OK) + + d.period = 2 + d.save + + d.reload + + expect(d.domain_statuses.count).to eq(1) + expect(d.domain_statuses.first.reload.value).to eq(DomainStatus::OK) + + d.domain_statuses.build(value: DomainStatus::CLIENT_DELETE_PROHIBITED) + d.save + + d.reload + + expect(d.domain_statuses.count).to eq(1) + expect(d.domain_statuses.first.value).to eq(DomainStatus::CLIENT_DELETE_PROHIBITED) + end end with_versioning do