1# frozen_string_literal: true
2
3require "test_helper"
4require "customer"
5require "form_template"
6require "monthly_data_limit"
7
8class PlanSettingsFormTest < Minitest::Test
9 def render(data_limit: nil, plan_name: "test_usd")
10 customer = customer(plan_name: plan_name)
11 limits = MonthlyDataLimit.for_currency(customer.currency, CONFIG)
12 FormTemplate.render(
13 "plan_settings",
14 customer: customer,
15 sims: [OpenStruct.new],
16 data_limit: data_limit,
17 monthly_data_limit_step: limits[:step],
18 monthly_data_limit_max: limits[:max]
19 )
20 end
21
22 def test_monthly_data_limit_is_integer_field
23 field = render.field("monthly_data_limit")
24 validate = field.find(
25 "ns:validate",
26 ns: "http://jabber.org/protocol/xdata-validate"
27 ).first
28
29 assert_equal "text-single", field.type
30 assert_equal "xs:integer", validate[:datatype]
31 end
32
33 def test_monthly_data_limit_has_slider_range
34 validate = render.field("monthly_data_limit").find(
35 "ns:validate",
36 ns: "http://jabber.org/protocol/xdata-validate"
37 ).first
38 range = validate.children.first
39
40 assert_equal "range", range.name
41 assert_equal "0", range[:min]
42 assert_equal "50", range[:max]
43 end
44
45 def test_monthly_data_limit_options_step_by_five_gb_cost
46 options = render.field("monthly_data_limit").options.map(&:value)
47
48 assert_equal (0..50).step(5).map(&:to_s), options
49 end
50
51 def test_monthly_data_limit_defaults_to_one_five_gb_step
52 assert_equal "5", render.field("monthly_data_limit").value
53 end
54
55 def test_monthly_data_limit_uses_customer_currency
56 field = render(plan_name: "test_cad").field("monthly_data_limit")
57 validate = field.find(
58 "ns:validate",
59 ns: "http://jabber.org/protocol/xdata-validate"
60 ).first
61 range = validate.children.first
62
63 assert_equal "60", range[:max]
64 assert_equal "6", field.value
65 assert_equal (0..60).step(6).map(&:to_s), field.options.map(&:value)
66 end
67
68 def test_monthly_data_limit_keeps_existing_value
69 field = render(data_limit: "10").field("monthly_data_limit")
70
71 assert_equal "10", field.value
72 end
73end