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