add statsd counter for data-only registration

Phillip Davis created

Change summary

lib/statsd.rb             |  3 +++
test/test_registration.rb | 32 ++++++++++++++++++++++++++++++++
2 files changed, 35 insertions(+)

Detailed changes

lib/statsd.rb 🔗

@@ -14,6 +14,9 @@ Registration::Registered.statsd_count :write, "registration.registered"
 Registration::Activation.extend StatsD::Instrument
 Registration::Activation.statsd_count :write, "registration.activation"
 
+Registration::DataOnly.extend StatsD::Instrument
+Registration::DataOnly.statsd_count :write, "registration.data_only"
+
 Registration::Payment::Bitcoin.extend StatsD::Instrument
 Registration::Payment::Bitcoin.statsd_count :write, "registration.payment.bitcoin"
 

test/test_registration.rb 🔗

@@ -2582,6 +2582,38 @@ class RegistrationTest < Minitest::Test
 			assert_mock Command::COMMAND_MANAGER
 		end
 		em :test_write_calls_sim_kind_for_and_process
+
+		def test_write_emits_statsd_count
+			statsd_capture = []
+			result = execute_command do
+				Command::COMMAND_MANAGER.expect(
+					:write,
+					EMPromise.reject(:test_result),
+					[Matching.new do |iq|
+						assert_equal iq.form.title, "Order SIM"
+						assert(
+							iq.form.instructions.start_with?("Our SIMs provide a plan")
+						)
+					end]
+				)
+				StatsD.singleton_client.stub(
+					:increment,
+					->(*args, **kwargs) { statsd_capture << [args, kwargs] }
+				) do
+					Registration::DataOnly.new(
+						@customer,
+						@sim_kind
+					).write.catch { |e| e }.sync
+				end
+			end
+			assert_equal result, :test_result
+			assert_includes(
+				statsd_capture.map { |args, _| args.first },
+				"registration.data_only"
+			)
+			assert_mock Command::COMMAND_MANAGER
+		end
+		em :test_write_emits_statsd_count
 	end
 
 	class PayForSimTest < Minitest::Test