fix: remove processing_status from ports

Phillip Davis created

now it's inferred from actual_foc_date
(originally forgot to include new schemas commit hash)

Change summary

lib/db_port.rb         | 15 +++++++++++----
lib/validators.rb      |  7 -------
schemas                |  2 +-
test/test_port_repo.rb |  6 ++++--
4 files changed, 16 insertions(+), 14 deletions(-)

Detailed changes

lib/db_port.rb 🔗

@@ -1,18 +1,17 @@
 # frozen_string_literal: true
 
+require "date_core"
 require "value_semantics/monkey_patched"
 require_relative "./validators"
 
 class DbPort
 	module Status
-		SUBMITTED = "submitted"
-		COMPLETE = "complete"
-		FOC = "foc"
+		SUBMITTED = "SUBMITTED"
+		COMPLETE = "COMPLETE"
 	end
 
 	value_semantics do
 		id String
-		processing_status PortProcessingStatus
 		actual_foc_date Either(DateTime, nil), default: nil, coerce: true
 		updated_at DateTime, coerce: true
 		tel ValidTelString
@@ -20,6 +19,14 @@ class DbPort
 		backend_sgx String
 	end
 
+	def processing_status
+		if actual_foc_date&.< DateTime.now
+			Status::COMPLETE
+		else
+			Status::SUBMITTED
+		end
+	end
+
 	def self.coerce_actual_foc_date(time)
 		time&.to_datetime
 	end

lib/validators.rb 🔗

@@ -5,10 +5,3 @@ module ValidTelString
 		value.is_a?(String) && value =~ /\A\+1(\d{3})(\d{3})(\d+)\Z/
 	end
 end
-
-module PortProcessingStatus
-	def self.===(value)
-		value.is_a?(String) &&
-			["complete", "submitted", "foc"].include?(value.downcase)
-	end
-end

schemas 🔗

@@ -1 +1 @@
-Subproject commit d1c2a6e6fe23408f6f38513f4040518d95fe565c
+Subproject commit e6f4d5c62df63b96e14c412624869411bcbbc76a

test/test_port_repo.rb 🔗

@@ -25,7 +25,6 @@ class PortRepoDbTest < Minitest::Test
 		rows = [
 			{
 				"id" => "port1",
-				"processing_status" => "complete",
 				"actual_foc_date" => DateTime.now,
 				"updated_at" => DateTime.now,
 				"tel" => "+12225551234",
@@ -33,6 +32,9 @@ class PortRepoDbTest < Minitest::Test
 				"backend_sgx" => "sgx"
 			}
 		]
+		# Make sure that `processing_status`
+		# resolves to "complete"
+		sleep 1
 		db = FakeDbForPorts.new(rows)
 		repo = PortRepo::Db.new(@output, db: db)
 
@@ -41,7 +43,7 @@ class PortRepoDbTest < Minitest::Test
 		assert_equal 1, ports.length
 		assert_kind_of DbPort, ports[0]
 		assert_equal "port1", ports[0].id
-		assert_equal "complete", ports[0].processing_status
+		assert_equal DbPort::Status::COMPLETE, ports[0].processing_status
 	end
 	em :test_list_returns_db_ports