Ending call takes customer_id

Stephen Paul Weber created

Change summary

lib/call_attempt_repo.rb |  4 ++--
lib/cdr_repo.rb          |  2 +-
test/test_helper.rb      |  2 +-
test/test_web.rb         | 21 +++++++++++++++++++++
4 files changed, 25 insertions(+), 4 deletions(-)

Detailed changes

lib/call_attempt_repo.rb 🔗

@@ -46,9 +46,9 @@ class CallAttemptRepo
 		end
 	end
 
-	def ending_call(customer, call_id)
+	def ending_call(customer_id, call_id)
 		redis.srem(
-			"jmp_customer_ongoing_calls-#{customer.customer_id}",
+			"jmp_customer_ongoing_calls-#{customer_id}",
 			call_id
 		)
 	end

lib/cdr_repo.rb 🔗

@@ -12,7 +12,7 @@ class CDRRepo
 		data.delete(:rate)
 		data.delete(:charge)
 		columns, values = data.to_a.transpose
-		DB.query_defer(<<~SQL, values)
+		@db.query_defer(<<~SQL, values)
 			INSERT INTO cdr (#{columns.join(',')})
 			VALUES ($1, $2, $3, $4, $5, $6, $7)
 		SQL

test/test_helper.rb 🔗

@@ -291,7 +291,7 @@ class FakeRedis
 	end
 
 	def srem(key, member)
-		@values[key].delete(member)
+		@values[key]&.delete(member)
 	end
 
 	def scard(key)

test/test_web.rb 🔗

@@ -127,6 +127,7 @@ class WebTest < Minitest::Test
 				)
 			)
 		)
+		Web.opts[:cdr_repo] = CDRRepo.new(db: FakeDB.new)
 		Web.opts[:common_logger] = FakeLog.new
 		Web.opts[:reachability_repo] = ReachabilityRepo::Voice.new(
 			redis: ReachableRedis,
@@ -359,6 +360,26 @@ class WebTest < Minitest::Test
 	end
 	em :test_outbound_toll_free
 
+	def test_outbound_disconnect
+		post(
+			"/outbound/calls/status",
+			{
+				eventType: "disconnect",
+				from: "ccustomerid",
+				to: "+15557654321",
+				callId: "acall",
+				startTime: Time.now.to_s,
+				endTime: Time.now.to_s,
+				cause: "hangup"
+			}.to_json,
+			{ "CONTENT_TYPE" => "application/json" }
+		)
+
+		assert last_response.ok?
+		assert_equal("OK", last_response.body)
+	end
+	em :test_outbound_disconnect
+
 	def test_inbound
 		CustomerFwd::BANDWIDTH_VOICE.expect(
 			:create_call,