@@ -20,5 +20,94 @@ class ContextSuccessTest < Minitest::Test
20
20
result . inspect
21
21
)
22
22
end
23
+
24
+ test '#[]' do
25
+ result1 = Context ::Success ( :ok )
26
+ result2 = Context ::Success ( :ok , a : 1 , b : 2 )
27
+
28
+ assert_nil result1 [ :a ]
29
+ assert_nil result1 [ :b ]
30
+
31
+ assert_equal 1 , result2 [ :a ]
32
+ assert_equal 2 , result2 [ :b ]
33
+ end
34
+
35
+ # rubocop:disable Style/SingleArgumentDig
36
+ test '#dig' do
37
+ result1 = Context ::Success ( :ok )
38
+ result2 = Context ::Success ( :ok , a : { b : 1 } )
39
+
40
+ assert_nil result1 . dig ( :a , :b )
41
+ assert_nil result2 . dig ( :a , :c )
42
+
43
+ assert_equal ( { b : 1 } , result2 . dig ( :a ) )
44
+ assert_equal 1 , result2 . dig ( :a , :b )
45
+ end
46
+ # rubocop:enable Style/SingleArgumentDig
47
+
48
+ test '#fetch' do
49
+ result1 = Context ::Success ( :ok )
50
+ result2 = Context ::Success ( :ok , a : 1 , b : 2 )
51
+
52
+ assert_raises ( KeyError ) { result1 . fetch ( :a ) }
53
+ assert_raises ( KeyError ) { result1 . fetch ( :b ) }
54
+
55
+ assert_equal 1 , result2 . fetch ( :a )
56
+ assert_equal 2 , result2 . fetch ( :b )
57
+
58
+ # ---
59
+
60
+ assert_equal 3 , result1 . fetch ( :a , 3 )
61
+ assert_equal 4 , result1 . fetch ( :b , 4 )
62
+
63
+ assert_equal 1 , result2 . fetch ( :a , 3 )
64
+ assert_equal 2 , result2 . fetch ( :b , 4 )
65
+
66
+ # ---
67
+
68
+ # rubocop:disable Style/RedundantFetchBlock
69
+ assert_equal ( 5 , result1 . fetch ( :a ) { 5 } )
70
+ assert_equal ( 6 , result1 . fetch ( :b ) { 6 } )
71
+
72
+ assert_equal ( 1 , result2 . fetch ( :a ) { 7 } )
73
+ assert_equal ( 2 , result2 . fetch ( :b ) { 8 } )
74
+ # rubocop:enable Style/RedundantFetchBlock
75
+ end
76
+
77
+ test '#slice' do
78
+ result1 = Context ::Success ( :ok )
79
+ result2 = Context ::Success ( :ok , a : 1 , b : 2 )
80
+
81
+ assert_equal ( { } , result1 . slice ( :a , :b ) )
82
+ assert_equal ( { a : 1 , b : 2 } , result2 . slice ( :a , :b ) )
83
+ end
84
+
85
+ test '#values_at' do
86
+ result1 = Context ::Success ( :ok )
87
+ result2 = Context ::Success ( :ok , a : 1 , b : 2 )
88
+
89
+ assert_equal [ nil , nil ] , result1 . values_at ( :a , :b )
90
+ assert_equal [ 1 , 2 ] , result2 . values_at ( :a , :b )
91
+ end
92
+
93
+ test '#fetch_values' do
94
+ result1 = Context ::Success ( :ok )
95
+ result2 = Context ::Success ( :ok , a : 1 , b : 2 )
96
+
97
+ assert_raises ( KeyError ) do
98
+ result1 . fetch_values ( :a , :b )
99
+ end
100
+
101
+ assert_equal [ 1 , 2 ] , result2 . fetch_values ( :a , :b )
102
+
103
+ # ---
104
+
105
+ values1 = result1 . fetch_values ( :a , :b , :c , :d ) { |key | key . to_s . upcase }
106
+ values2 = result2 . fetch_values ( :a , :b , :c , :d ) { |key | key . to_s . upcase }
107
+
108
+ assert_equal %w[ A B C D ] , values1
109
+
110
+ assert_equal [ 1 , 2 , 'C' , 'D' ] , values2
111
+ end
23
112
end
24
113
end
0 commit comments