diff --git a/spec/fabricators/zonefile_setting_fabricator.rb b/spec/fabricators/zonefile_setting_fabricator.rb new file mode 100644 index 000000000..b8b04513a --- /dev/null +++ b/spec/fabricators/zonefile_setting_fabricator.rb @@ -0,0 +1,10 @@ +Fabricator(:zonefile_setting) do + origin 'ee' + ttl 43200 + refresh 3600 + expire 1209600 + minimum_ttl 3600 + email 'hostmaster.eestiinternet.ee' + master_nameserver 'ns.tld.ee' + after_build { |x| x.retry = 900 } +end diff --git a/spec/models/zonefile_setting_spec.rb b/spec/models/zonefile_setting_spec.rb index c8909f2eb..5ac895a8e 100644 --- a/spec/models/zonefile_setting_spec.rb +++ b/spec/models/zonefile_setting_spec.rb @@ -49,4 +49,34 @@ describe ZonefileSetting do @zonefile.scan(/^#{d.name}/).count.should == 0 end + + it 'does not create duplicate zones' do + Fabricate(:zonefile_setting) + expect { Fabricate(:zonefile_setting) }.to raise_error(ActiveRecord::RecordInvalid) + end + + it 'does not allow deleting zone when it has existing domains' do + zs = ZonefileSetting.where({ + origin: 'ee', + ttl: 43200, + refresh: 3600, + retry: 900, + expire: 1209600, + minimum_ttl: 3600, + email: 'hostmaster.eestiinternet.ee', + master_nameserver: 'ns.tld.ee' + }).first_or_create! + + d = Fabricate(:domain) + + zs.destroy.should == false + + zs.errors.full_messages.should match_array(["There are 1 domains in this zone"]) + ZonefileSetting.count.should == 1 + + d.destroy + zs.destroy + + ZonefileSetting.count.should == 0 + end end