From e0681eff6305be9cf99cec20d20a77b2c7e16918 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Fri, 30 Nov 2018 16:42:50 +0200 Subject: [PATCH 1/3] Add fixture --- test/fixtures/registrars.yml | 11 +++++++++++ test/models/registrar_test.rb | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/test/fixtures/registrars.yml b/test/fixtures/registrars.yml index e2d6dfc13..be7adaa5b 100644 --- a/test/fixtures/registrars.yml +++ b/test/fixtures/registrars.yml @@ -35,3 +35,14 @@ not_in_use: accounting_customer_code: any language: en reference_no: 39 + +invalid: + name: "" + reg_no: any + code: another + email: any + country_code: US + vat_no: any + accounting_customer_code: any + language: en + reference_no: 42 diff --git a/test/models/registrar_test.rb b/test/models/registrar_test.rb index bc50e4071..05314b747 100644 --- a/test/models/registrar_test.rb +++ b/test/models/registrar_test.rb @@ -9,6 +9,10 @@ class RegistrarTest < ActiveSupport::TestCase assert @registrar.valid?, proc { @registrar.errors.full_messages } end + def test_invalid_fixture_is_invalid + assert registrars(:invalid).invalid? + end + def test_invalid_without_name @registrar.name = '' assert @registrar.invalid? From 52561298499a2c69fe8e4fe46c6a8ba9d6123517 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Fri, 30 Nov 2018 16:43:12 +0200 Subject: [PATCH 2/3] Improve readability --- test/models/registrar_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/models/registrar_test.rb b/test/models/registrar_test.rb index 05314b747..242e19c89 100644 --- a/test/models/registrar_test.rb +++ b/test/models/registrar_test.rb @@ -5,7 +5,7 @@ class RegistrarTest < ActiveSupport::TestCase @registrar = registrars(:bestnames) end - def test_valid + def test_default_fixture_is_valid assert @registrar.valid?, proc { @registrar.errors.full_messages } end From 2997ece1036f5f4e9f5fea9e7ef42816372433b2 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Fri, 30 Nov 2018 16:43:25 +0200 Subject: [PATCH 3/3] Bypass validation --- .../regenerate_registrar_reference_numbers.rake | 4 +--- .../regenerate_registrar_reference_numbers_test.rb | 11 +++++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/tasks/data_migrations/regenerate_registrar_reference_numbers.rake b/lib/tasks/data_migrations/regenerate_registrar_reference_numbers.rake index aff296d83..6f6aaebe2 100644 --- a/lib/tasks/data_migrations/regenerate_registrar_reference_numbers.rake +++ b/lib/tasks/data_migrations/regenerate_registrar_reference_numbers.rake @@ -6,9 +6,7 @@ namespace :data_migrations do Registrar.all.each do |registrar| next unless registrar.reference_no.start_with?('RF') - registrar.reference_no = Billing::ReferenceNo.generate - registrar.save! - + registrar.update_columns(reference_no: Billing::ReferenceNo.generate) processed_registrar_count += 1 end end diff --git a/test/integration/tasks/data_migrations/regenerate_registrar_reference_numbers_test.rb b/test/integration/tasks/data_migrations/regenerate_registrar_reference_numbers_test.rb index 7700b3fb6..c496cd95b 100644 --- a/test/integration/tasks/data_migrations/regenerate_registrar_reference_numbers_test.rb +++ b/test/integration/tasks/data_migrations/regenerate_registrar_reference_numbers_test.rb @@ -11,6 +11,17 @@ class RegenerateRegistrarReferenceNumbersTaskTest < ActiveSupport::TestCase assert_not registrar.reference_no.start_with?('RF') end + def test_bypasses_registrar_validation + registrar = registrars(:invalid) + registrar.update_column(:reference_no, 'RF1111') + assert registrar.invalid? + + capture_io { run_task } + registrar.reload + + assert_not registrar.reference_no.start_with?('RF') + end + def test_does_not_regenerate_when_the_task_is_run_again registrar = registrars(:bestnames) registrar.update!(reference_no: '1111')