From 00041df311906f17cff6e825008e9c8df31c1fad Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 30 Jan 2018 01:31:48 +0200 Subject: [PATCH] Require attribute #660 --- app/models/nameserver.rb | 2 +- ..._change_nameservers_domain_id_to_not_null.rb | 5 +++++ db/structure.sql | 6 ++++-- test/fixtures/nameservers.yml | 3 +++ test/models/nameserver_test.rb | 17 +++++++++++++++++ 5 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20180129232054_change_nameservers_domain_id_to_not_null.rb create mode 100644 test/fixtures/nameservers.yml create mode 100644 test/models/nameserver_test.rb diff --git a/app/models/nameserver.rb b/app/models/nameserver.rb index d91325ae0..9d57501f4 100644 --- a/app/models/nameserver.rb +++ b/app/models/nameserver.rb @@ -2,7 +2,7 @@ class Nameserver < ActiveRecord::Base include Versions # version/nameserver_version.rb include EppErrors - belongs_to :domain + belongs_to :domain, required: true # rubocop: disable Metrics/LineLength validates :hostname, format: { with: /\A(([a-zA-Z0-9]|[a-zA-ZäöüõšžÄÖÜÕŠŽ0-9][a-zA-ZäöüõšžÄÖÜÕŠŽ0-9\-]*[a-zA-ZäöüõšžÄÖÜÕŠŽ0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\z/ } diff --git a/db/migrate/20180129232054_change_nameservers_domain_id_to_not_null.rb b/db/migrate/20180129232054_change_nameservers_domain_id_to_not_null.rb new file mode 100644 index 000000000..3f2abb42f --- /dev/null +++ b/db/migrate/20180129232054_change_nameservers_domain_id_to_not_null.rb @@ -0,0 +1,5 @@ +class ChangeNameserversDomainIdToNotNull < ActiveRecord::Migration + def change + change_column_null :nameservers, :domain_id, false + end +end diff --git a/db/structure.sql b/db/structure.sql index ad9464820..435c2cefe 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -2226,7 +2226,7 @@ CREATE TABLE nameservers ( created_at timestamp without time zone, updated_at timestamp without time zone, ipv6 character varying[] DEFAULT '{}'::character varying[], - domain_id integer, + domain_id integer NOT NULL, creator_str character varying, updator_str character varying, legacy_domain_id integer, @@ -3628,7 +3628,7 @@ ALTER TABLE ONLY settings -- --- Name: unique_contact_code; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- Name: unique_contact_code; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: -- ALTER TABLE ONLY contacts @@ -5080,3 +5080,5 @@ INSERT INTO schema_migrations (version) VALUES ('20180126104903'); INSERT INTO schema_migrations (version) VALUES ('20180129143538'); +INSERT INTO schema_migrations (version) VALUES ('20180129232054'); + diff --git a/test/fixtures/nameservers.yml b/test/fixtures/nameservers.yml new file mode 100644 index 000000000..4138be4e4 --- /dev/null +++ b/test/fixtures/nameservers.yml @@ -0,0 +1,3 @@ +ns1: + hostname: ns1.bestnames.test + domain: shop diff --git a/test/models/nameserver_test.rb b/test/models/nameserver_test.rb new file mode 100644 index 000000000..ce396142f --- /dev/null +++ b/test/models/nameserver_test.rb @@ -0,0 +1,17 @@ +require 'test_helper' + +class NameserverTest < ActiveSupport::TestCase + def setup + @nameserver = nameservers(:ns1) + end + + def test_valid + assert @nameserver.valid? + end + + def test_invalid_without_domain + @nameserver.domain = nil + @nameserver.validate + assert @nameserver.invalid? + end +end