test_sim_kind.rb

 1# frozen_string_literal: true
 2
 3require "test_helper"
 4
 5require "ostruct"
 6require "customer"
 7
 8require_relative "../lib/sim_order"
 9require_relative "../lib/sim_kind"
10
11class SIMKindTest < Minitest::Test
12	def setup
13		@sim_form = Blather::Stanza::Iq::Command.new.tap { |iq|
14			iq.form.fields = [{ var: "sim_kind", value: "sim" }]
15		}
16
17		@esim_form = Blather::Stanza::Iq::Command.new.tap { |iq|
18			iq.form.fields = [{ var: "sim_kind", value: "esim" }]
19		}
20
21		@invalid_form = Blather::Stanza::Iq::Command.new.tap { |iq|
22			iq.form.fields = [{ var: "sim_kind", value: "invalid" }]
23		}
24
25		@missing_form = Blather::Stanza::Iq::Command.new.tap { |iq|
26			iq.form.fields = []
27		}
28	end
29
30	def test_initialize_with_sim
31		kind = SIMKind.new("sim")
32		assert_equal SIMOrder, kind.klass
33	end
34
35	def test_initialize_with_esim
36		kind = SIMKind.new("esim")
37		assert_equal SIMOrder::ESIM, kind.klass
38	end
39
40	def test_initialize_with_invalid_variant
41		kind = SIMKind.new("invalid")
42		assert_nil kind.klass
43	end
44
45	def test_initialize_with_nil
46		kind = SIMKind.new(nil)
47		assert_nil kind.klass
48	end
49
50	def test_from_form_with_sim
51		kind = SIMKind.from_form(@sim_form.form)
52		assert_equal SIMOrder, kind.klass
53	end
54
55	def test_from_form_with_esim
56		kind = SIMKind.from_form(@esim_form.form)
57		assert_equal SIMOrder::ESIM, kind.klass
58	end
59
60	def test_cfg_returns_nil_when_customer_currency_nil
61		kind = SIMKind.new("sim")
62		cust = customer(currency: nil)
63		assert_nil kind.cfg(cust.currency)
64	end
65
66	def test_cfg_returns_nil_when_config_missing_variant
67		kind = SIMKind.new("invalid")
68		cust = customer(currency: :USD)
69		assert_nil kind.cfg(cust.currency)
70	end
71
72	def test_cfg_returns_nil_when_config_missing_currency
73		kind = SIMKind.new("sim")
74		cust = customer(currency: :EUR)
75		assert_nil kind.cfg(cust.currency)
76	end
77end