From fb20db59c74c6f4e38f7da303a4c0de6849635bd Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Fri, 11 Jul 2025 10:38:01 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20Denmark=20check=20for=20certain=20ranges?= =?UTF-8?q?=20of=20birth=20years=20=F0=9F=87=A9=F0=9F=87=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + lib/tin_valid/denmark_tin.rb | 7 ++++--- spec/tin_valid/denmark_tin_spec.rb | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77b3445..ea7a2ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ Fixes: - Fix Finland checks for tins ending in `P` 🇫🇮 +- Fix Denmark check for certain ranges of birth years 🇩🇰 ## [1.2.1] - 2025-05-22 diff --git a/lib/tin_valid/denmark_tin.rb b/lib/tin_valid/denmark_tin.rb index ed42622..d41fddf 100644 --- a/lib/tin_valid/denmark_tin.rb +++ b/lib/tin_valid/denmark_tin.rb @@ -72,14 +72,15 @@ def checksum # rubocop:disable Metrics/PerceivedComplexity def check_serial(serial, year) case serial.to_i - in 1..3999 + when 1..3999 (1900..1999).cover?(birth_year) - in 4000..4999, 9000..9999 + when 4000..4999, + 9000..9999 case year.to_i in 0..36 then (2000..2036).cover?(birth_year) in 36..99 then (1937..1999).cover?(birth_year) end - in 5000..8999 + when 5000..8999 case year.to_i in 0..36 then (2000..2036).cover?(birth_year) in 37..57 then false diff --git a/spec/tin_valid/denmark_tin_spec.rb b/spec/tin_valid/denmark_tin_spec.rb index 272af41..c7b5441 100644 --- a/spec/tin_valid/denmark_tin_spec.rb +++ b/spec/tin_valid/denmark_tin_spec.rb @@ -5,6 +5,8 @@ valid_values = [ ["0101111113", nil], ["0101111113", Date.new(1911, 1, 1)], + ["2808784028", nil], + ["2808784028", Date.new(1978, 8, 28)], ] invalid_values = [