Use Estonian reference number format instead of ISO 11649

This commit is contained in:
Artur Beljajev 2018-10-01 13:43:50 +03:00
parent aa6e8f8a93
commit 5738c17731
25 changed files with 244 additions and 47 deletions

View file

@ -0,0 +1,29 @@
require 'test_helper'
# https://www.pangaliit.ee/settlements-and-standards/reference-number-of-the-invoice
class ReferenceNoBaseTest < ActiveSupport::TestCase
def test_generates_random_base
assert_not_equal Billing::ReferenceNo::Base.generate, Billing::ReferenceNo::Base.generate
end
def test_randomly_generated_base_conforms_to_standard
base = Billing::ReferenceNo::Base.generate
format = /\A\d{1,19}\z/
assert_match format, base.to_s
end
def test_generates_check_digit_for_a_given_base
assert_equal 3, Billing::ReferenceNo::Base.new('1').check_digit
assert_equal 7, Billing::ReferenceNo::Base.new('1234567891234567891').check_digit
end
def test_returns_string_representation
base = Billing::ReferenceNo::Base.new('1')
assert_equal '1', base.to_s
end
def test_normalizes_non_string_values
base = Billing::ReferenceNo::Base.new(1)
assert_equal '1', base.to_s
end
end

View file

@ -0,0 +1,13 @@
require 'test_helper'
class ReferenceNoTest < ActiveSupport::TestCase
def test_returns_format_regexp
format = /\A\d{2,20}\z/
assert_equal format, Billing::ReferenceNo::REGEXP
end
def test_generated_reference_number_conforms_to_format
reference_no = Billing::ReferenceNo.generate
assert_match Billing::ReferenceNo::REGEXP, reference_no
end
end

View file

@ -6,7 +6,7 @@ class RegistrarTest < ActiveSupport::TestCase
end
def test_valid
assert @registrar.valid?
assert @registrar.valid?, proc { @registrar.errors.full_messages }
end
def test_invalid_without_name
@ -55,8 +55,28 @@ class RegistrarTest < ActiveSupport::TestCase
assert_equal 'Main Street, New York, New York, 12345', @registrar.address
end
def test_reference_number_generation
@registrar.validate
refute_empty @registrar.reference_no
def test_validates_reference_number_format
@registrar.reference_no = '1'
assert @registrar.invalid?
@registrar.reference_no = '11'
assert @registrar.valid?
@registrar.reference_no = '1' * 20
assert @registrar.valid?
@registrar.reference_no = '1' * 21
assert @registrar.invalid?
@registrar.reference_no = '1a'
assert @registrar.invalid?
end
def test_disallows_non_unique_reference_numbers
registrars(:bestnames).update!(reference_no: '1234')
assert_raises ActiveRecord::RecordNotUnique do
registrars(:goodnames).update!(reference_no: '1234')
end
end
end