hammer_cli 3.7.0 → 3.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/hammer +1 -6
- data/doc/release_notes.md +15 -0
- data/lib/hammer_cli/help/builder.rb +1 -2
- data/lib/hammer_cli/i18n/find_task.rb +88 -0
- data/lib/hammer_cli/i18n.rb +4 -0
- data/lib/hammer_cli/options/normalizers.rb +2 -5
- data/lib/hammer_cli/settings.rb +7 -0
- data/lib/hammer_cli/task_helper.rb +84 -0
- data/lib/hammer_cli/testing/output_matchers.rb +1 -1
- data/lib/hammer_cli/utils.rb +1 -1
- data/lib/hammer_cli/version.rb +1 -1
- data/locale/Makefile.def +29 -7
- data/locale/ca/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/cs_CZ/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/de/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/en/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/en_GB/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/es/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/fr/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/it/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/ja/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/ka/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/ko/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/pt_BR/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/ru/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/zh_CN/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/zh_TW/LC_MESSAGES/hammer-cli.mo +0 -0
- data/man/hammer.1.gz +0 -0
- data/test/functional/help_test.rb +1 -1
- data/test/test_helper.rb +1 -1
- data/test/unit/abstract_test.rb +54 -54
- data/test/unit/apipie/command_test.rb +26 -27
- data/test/unit/apipie/option_builder_test.rb +28 -28
- data/test/unit/apipie/option_definition_test.rb +5 -5
- data/test/unit/apipie/test_helper.rb +3 -0
- data/test/unit/bash_test.rb +21 -21
- data/test/unit/command_extensions_test.rb +68 -68
- data/test/unit/completer_test.rb +57 -57
- data/test/unit/csv_parser_test.rb +12 -12
- data/test/unit/defaults_test.rb +3 -3
- data/test/unit/help/builder_test.rb +7 -7
- data/test/unit/help/definition/abstract_item_test.rb +2 -2
- data/test/unit/help/definition/list_test.rb +2 -2
- data/test/unit/help/definition/note_test.rb +2 -2
- data/test/unit/help/definition/section_test.rb +2 -2
- data/test/unit/help/definition/text_test.rb +2 -2
- data/test/unit/help/definition_test.rb +36 -36
- data/test/unit/help/text_builder_test.rb +39 -39
- data/test/unit/history_test.rb +6 -6
- data/test/unit/i18n_test.rb +2 -2
- data/test/unit/logger_test.rb +1 -1
- data/test/unit/main_test.rb +7 -7
- data/test/unit/modules_test.rb +24 -25
- data/test/unit/option_builder_test.rb +1 -1
- data/test/unit/options/matcher_test.rb +15 -15
- data/test/unit/options/normalizers_test.rb +92 -88
- data/test/unit/options/option_definition_test.rb +11 -11
- data/test/unit/options/option_family_test.rb +7 -7
- data/test/unit/options/validators/dsl_test.rb +35 -35
- data/test/unit/output/adapter/abstract_test.rb +10 -10
- data/test/unit/output/adapter/base_test.rb +36 -36
- data/test/unit/output/adapter/csv_test.rb +38 -38
- data/test/unit/output/adapter/json_test.rb +38 -38
- data/test/unit/output/adapter/table_test.rb +42 -50
- data/test/unit/output/adapter/yaml_test.rb +38 -38
- data/test/unit/output/definition_test.rb +43 -43
- data/test/unit/output/dsl_test.rb +19 -19
- data/test/unit/output/field_filter_test.rb +10 -10
- data/test/unit/output/fields_test.rb +27 -27
- data/test/unit/output/formatters_test.rb +39 -39
- data/test/unit/output/output_test.rb +14 -14
- data/test/unit/output/record_collection_test.rb +18 -18
- data/test/unit/settings_test.rb +35 -35
- data/test/unit/utils_test.rb +30 -27
- metadata +33 -44
@@ -22,7 +22,7 @@ describe "constraints" do
|
|
22
22
|
describe "exist?" do
|
23
23
|
it "throws not implemented error" do
|
24
24
|
constraint = cls.new(options, option_values, [:option_a, :option_b, :option_c])
|
25
|
-
|
25
|
+
_{ constraint.exist? }.must_raise NotImplementedError
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -30,7 +30,7 @@ describe "constraints" do
|
|
30
30
|
it "should raise exception when exist? returns true" do
|
31
31
|
constraint = cls.new(options, option_values, [])
|
32
32
|
constraint.stubs(:exist?).returns(true)
|
33
|
-
|
33
|
+
_{ constraint.rejected }.must_raise HammerCLI::Options::Validators::ValidationError
|
34
34
|
end
|
35
35
|
|
36
36
|
it "should raise exception with a message" do
|
@@ -39,14 +39,14 @@ describe "constraints" do
|
|
39
39
|
begin
|
40
40
|
constraint.rejected :msg => "CUSTOM MESSAGE"
|
41
41
|
rescue HammerCLI::Options::Validators::ValidationError => e
|
42
|
-
e.message.must_equal "CUSTOM MESSAGE"
|
42
|
+
_(e.message).must_equal "CUSTOM MESSAGE"
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
46
|
it "should return nil when exist? returns true" do
|
47
47
|
constraint = cls.new(options, option_values, [])
|
48
48
|
constraint.stubs(:exist?).returns(false)
|
49
|
-
constraint.rejected
|
49
|
+
assert_nil constraint.rejected
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
@@ -54,7 +54,7 @@ describe "constraints" do
|
|
54
54
|
it "should raise exception when exist? returns true" do
|
55
55
|
constraint = cls.new(options, option_values, [])
|
56
56
|
constraint.stubs(:exist?).returns(false)
|
57
|
-
|
57
|
+
_{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should raise exception with a message" do
|
@@ -63,14 +63,14 @@ describe "constraints" do
|
|
63
63
|
begin
|
64
64
|
constraint.rejected :msg => "CUSTOM MESSAGE"
|
65
65
|
rescue HammerCLI::Options::Validators::ValidationError => e
|
66
|
-
e.message.must_equal "CUSTOM MESSAGE"
|
66
|
+
_(e.message).must_equal "CUSTOM MESSAGE"
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
70
|
it "should return nil when exist? returns true" do
|
71
71
|
constraint = cls.new(options, option_values, [])
|
72
72
|
constraint.stubs(:exist?).returns(true)
|
73
|
-
constraint.required
|
73
|
+
assert_nil constraint.required
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
@@ -84,17 +84,17 @@ describe "constraints" do
|
|
84
84
|
|
85
85
|
it "should return true when no options are passed" do
|
86
86
|
constraint = cls.new(options, option_values, [])
|
87
|
-
constraint.exist
|
87
|
+
_(constraint.exist?).must_equal true
|
88
88
|
end
|
89
89
|
|
90
90
|
it "should return true when all the options exist" do
|
91
91
|
constraint = cls.new(options, option_values, [:option_a, :option_b, :option_c])
|
92
|
-
constraint.exist
|
92
|
+
_(constraint.exist?).must_equal true
|
93
93
|
end
|
94
94
|
|
95
95
|
it "should return false when one of the options is missing" do
|
96
96
|
constraint = cls.new(options, option_values, [:option_a, :option_b, :option_c, :option_unset_d])
|
97
|
-
constraint.exist
|
97
|
+
_(constraint.exist?).must_equal false
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
@@ -106,50 +106,50 @@ describe "constraints" do
|
|
106
106
|
describe "exist?" do
|
107
107
|
it "should return true when the option exist" do
|
108
108
|
constraint = cls.new(options, option_values, :option_a)
|
109
|
-
constraint.exist
|
109
|
+
_(constraint.exist?).must_equal true
|
110
110
|
end
|
111
111
|
|
112
112
|
it "should return false when the option is missing" do
|
113
113
|
constraint = cls.new(options, option_values, :option_unset_d)
|
114
|
-
constraint.exist
|
114
|
+
_(constraint.exist?).must_equal false
|
115
115
|
end
|
116
116
|
end
|
117
117
|
|
118
118
|
describe "#rejected" do
|
119
119
|
it "returns nil when the option is missing" do
|
120
120
|
constraint = cls.new(options, option_values, :option_unset_d)
|
121
|
-
constraint.rejected
|
121
|
+
assert_nil constraint.rejected
|
122
122
|
end
|
123
123
|
|
124
124
|
it "raises exception when the option is present" do
|
125
125
|
constraint = cls.new(options, option_values, :option_a)
|
126
|
-
e =
|
127
|
-
e.message.must_equal "You can't set option --option-a."
|
126
|
+
e = _{ constraint.rejected }.must_raise HammerCLI::Options::Validators::ValidationError
|
127
|
+
_(e.message).must_equal "You can't set option --option-a."
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
131
131
|
describe "#required" do
|
132
132
|
it "returns nil when the option exist" do
|
133
133
|
constraint = cls.new(options, option_values, :option_a)
|
134
|
-
constraint.required
|
134
|
+
assert_nil constraint.required
|
135
135
|
end
|
136
136
|
|
137
137
|
it "raises exception when the option is present" do
|
138
138
|
constraint = cls.new(options, option_values, :option_unset_d)
|
139
|
-
e =
|
140
|
-
e.message.must_equal 'Option --option-unset-d is required.'
|
139
|
+
e = _{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError
|
140
|
+
_(e.message).must_equal 'Option --option-unset-d is required.'
|
141
141
|
end
|
142
142
|
end
|
143
143
|
|
144
144
|
describe "#value" do
|
145
145
|
it "returns value of the option" do
|
146
146
|
constraint = cls.new(options, option_values, :option_a)
|
147
|
-
constraint.value.must_equal 1
|
147
|
+
_(constraint.value).must_equal 1
|
148
148
|
end
|
149
149
|
|
150
150
|
it "returns nil when the option is missing" do
|
151
151
|
constraint = cls.new(options, option_values, :option_unset_d)
|
152
|
-
constraint.value
|
152
|
+
assert_nil constraint.value
|
153
153
|
end
|
154
154
|
end
|
155
155
|
end
|
@@ -162,17 +162,17 @@ describe "constraints" do
|
|
162
162
|
|
163
163
|
it "should return true when no options are passed" do
|
164
164
|
constraint = cls.new(options, option_values, [])
|
165
|
-
constraint.exist
|
165
|
+
_(constraint.exist?).must_equal true
|
166
166
|
end
|
167
167
|
|
168
168
|
it "should return true when one of the options exist" do
|
169
169
|
constraint = cls.new(options, option_values, [:option_a, :option_unset_d, :option_unset_e])
|
170
|
-
constraint.exist
|
170
|
+
_(constraint.exist?).must_equal true
|
171
171
|
end
|
172
172
|
|
173
173
|
it "should return false when all the options are missing" do
|
174
174
|
constraint = cls.new(options, option_values, [:option_unset_d, :option_unset_e])
|
175
|
-
constraint.exist
|
175
|
+
_(constraint.exist?).must_equal false
|
176
176
|
end
|
177
177
|
end
|
178
178
|
|
@@ -183,51 +183,51 @@ describe "constraints" do
|
|
183
183
|
let(:cls) { HammerCLI::Options::Validators::DSL::OneOfConstraint }
|
184
184
|
|
185
185
|
it "raises exception when nothing to check is set" do
|
186
|
-
e =
|
187
|
-
e.message.must_equal 'Set at least one expected option'
|
186
|
+
e = _{ cls.new(options, option_values, []) }.must_raise RuntimeError
|
187
|
+
_(e.message).must_equal 'Set at least one expected option'
|
188
188
|
end
|
189
189
|
|
190
190
|
describe "#exist?" do
|
191
191
|
it "should return true when one of the options exist" do
|
192
192
|
constraint = cls.new(options, option_values, [:option_a, :option_unset_d, :option_unset_e])
|
193
|
-
constraint.exist
|
193
|
+
_(constraint.exist?).must_equal true
|
194
194
|
end
|
195
195
|
|
196
196
|
it "should return false when the option isn't present" do
|
197
197
|
constraint = cls.new(options, option_values, [:option_unset_d, :option_unset_e])
|
198
|
-
constraint.exist
|
198
|
+
_(constraint.exist?).must_equal false
|
199
199
|
end
|
200
200
|
|
201
201
|
it "should return false when more than one of the options is present" do
|
202
202
|
constraint = cls.new(options, option_values, [:option_a, :option_b])
|
203
|
-
constraint.exist
|
203
|
+
_(constraint.exist?).must_equal false
|
204
204
|
end
|
205
205
|
end
|
206
206
|
|
207
207
|
describe "#rejected" do
|
208
208
|
it "raises not implemented exception" do
|
209
209
|
constraint = cls.new(options, option_values, [:option_a, :option_unset_d])
|
210
|
-
e =
|
211
|
-
e.message.must_equal '#rejected is unsupported for OneOfConstraint'
|
210
|
+
e = _{ constraint.rejected }.must_raise NotImplementedError
|
211
|
+
_(e.message).must_equal '#rejected is unsupported for OneOfConstraint'
|
212
212
|
end
|
213
213
|
end
|
214
214
|
|
215
215
|
describe "#required" do
|
216
216
|
it "returns nil when one of the options exist" do
|
217
217
|
constraint = cls.new(options, option_values, [:option_a, :option_unset_d, :option_unset_e])
|
218
|
-
constraint.required
|
218
|
+
assert_nil constraint.required
|
219
219
|
end
|
220
220
|
|
221
221
|
it "raises exception when none of the options is present" do
|
222
222
|
constraint = cls.new(options, option_values, [:option_unset_d, :option_unset_e])
|
223
|
-
e =
|
224
|
-
e.message.must_equal 'One of options --option-unset-d, --option-unset-e is required.'
|
223
|
+
e = _{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError
|
224
|
+
_(e.message).must_equal 'One of options --option-unset-d, --option-unset-e is required.'
|
225
225
|
end
|
226
226
|
|
227
227
|
it "raises exception when more than one of the options is present" do
|
228
228
|
constraint = cls.new(options, option_values, [:option_a, :option_b])
|
229
|
-
e =
|
230
|
-
e.message.must_equal 'Only one of options --option-a, --option-b can be set.'
|
229
|
+
e = _{ constraint.required }.must_raise HammerCLI::Options::Validators::ValidationError
|
230
|
+
_(e.message).must_equal 'Only one of options --option-a, --option-b can be set.'
|
231
231
|
end
|
232
232
|
end
|
233
233
|
end
|
@@ -7,7 +7,7 @@ describe HammerCLI::Output::Adapter::Abstract do
|
|
7
7
|
|
8
8
|
|
9
9
|
it "should have features" do
|
10
|
-
adapter.features.must_be_kind_of Array
|
10
|
+
_(adapter.features).must_be_kind_of Array
|
11
11
|
end
|
12
12
|
|
13
13
|
class UnknownTestFormatter < HammerCLI::Output::Formatters::FieldFormatter
|
@@ -21,7 +21,7 @@ describe HammerCLI::Output::Adapter::Abstract do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it "allows default pagination" do
|
24
|
-
adapter.paginate_by_default
|
24
|
+
_(adapter.paginate_by_default?).must_equal true
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should filter formatters with incompatible features" do
|
@@ -52,25 +52,25 @@ describe HammerCLI::Output::Adapter::Abstract do
|
|
52
52
|
|
53
53
|
context "messages" do
|
54
54
|
it "should print message to stdout" do
|
55
|
-
|
55
|
+
_{ adapter.print_message("MESSAGE") }.must_output(/.*MESSAGE.*/, "")
|
56
56
|
end
|
57
57
|
|
58
58
|
it "should print formatted message with parameters" do
|
59
|
-
|
59
|
+
_{ adapter.print_message("MESSAGE %{a}, %{b}", :a => 'A', :b => 'B') }.must_output(/.*MESSAGE A, B.*/, "")
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'should print message with nil params' do
|
63
|
-
|
63
|
+
_{ adapter.print_message('MESSAGE', nil) }.must_output(/.*MESSAGE.*/, '')
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
67
|
it "should raise not implemented on print_collection" do
|
68
|
-
|
68
|
+
_{ adapter.print_collection([], HammerCLI::Output::RecordCollection.new([])) }.must_raise NotImplementedError
|
69
69
|
end
|
70
70
|
|
71
71
|
context "error messages" do
|
72
72
|
it "should print error message to stderr" do
|
73
|
-
|
73
|
+
_{ adapter.print_error("MESSAGE") }.must_output("", /.*MESSAGE.*/)
|
74
74
|
end
|
75
75
|
|
76
76
|
let(:expected_output) { "MESSAGE:\n"+
|
@@ -85,15 +85,15 @@ describe HammerCLI::Output::Adapter::Abstract do
|
|
85
85
|
}
|
86
86
|
|
87
87
|
it "should print list details of error to stderr" do
|
88
|
-
|
88
|
+
_{ adapter.print_error("MESSAGE", ["error", "message", "details"]) }.must_output("", expected_output)
|
89
89
|
end
|
90
90
|
|
91
91
|
it "should print string details of error to stderr" do
|
92
|
-
|
92
|
+
_{ adapter.print_error("MESSAGE", "error\nmessage\ndetails") }.must_output("", expected_output)
|
93
93
|
end
|
94
94
|
|
95
95
|
it "should print formatted message with parameters" do
|
96
|
-
|
96
|
+
_{
|
97
97
|
adapter.print_error("MESSAGE %{a}, %{b}", ["error %{a}", "error %{b}"], :a => 'A', :b => 'B')
|
98
98
|
}.must_output("", expected_formatted_output)
|
99
99
|
end
|
@@ -6,13 +6,13 @@ describe HammerCLI::Output::Adapter::Base do
|
|
6
6
|
let(:adapter) { HammerCLI::Output::Adapter::Base.new(context, HammerCLI::Output::Output.formatters) }
|
7
7
|
|
8
8
|
it "allows default pagination" do
|
9
|
-
adapter.paginate_by_default
|
9
|
+
_(adapter.paginate_by_default?).must_equal true
|
10
10
|
end
|
11
11
|
|
12
12
|
context "print_collection" do
|
13
13
|
|
14
14
|
let(:id) { Fields::Id.new(:path => [:id], :label => "Id") }
|
15
|
-
let(:
|
15
|
+
let(:firstname) { Fields::Field.new(:path => [:name], :label => "Name") }
|
16
16
|
let(:unlabeled) { Fields::Field.new(:path => [:name]) }
|
17
17
|
let(:surname) { Fields::Field.new(:path => [:surname], :label => "Surname") }
|
18
18
|
let(:address_city) { Fields::Field.new(:path => [:address, :city], :label => "City") }
|
@@ -59,13 +59,13 @@ describe HammerCLI::Output::Adapter::Base do
|
|
59
59
|
}]}
|
60
60
|
|
61
61
|
it "should print one field" do
|
62
|
-
fields = [
|
62
|
+
fields = [firstname]
|
63
63
|
expected_output = [
|
64
64
|
"Name: John",
|
65
65
|
"\n"
|
66
66
|
].join("\n")
|
67
67
|
|
68
|
-
|
68
|
+
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
69
69
|
end
|
70
70
|
|
71
71
|
it "doesn't print label when it's nil" do
|
@@ -75,11 +75,11 @@ describe HammerCLI::Output::Adapter::Base do
|
|
75
75
|
"\n"
|
76
76
|
].join("\n")
|
77
77
|
|
78
|
-
|
78
|
+
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
79
79
|
end
|
80
80
|
|
81
81
|
it "aligns multiple fields" do
|
82
|
-
fields = [
|
82
|
+
fields = [firstname, surname, unlabeled]
|
83
83
|
expected_output = [
|
84
84
|
"Name: John",
|
85
85
|
"Surname: Doe",
|
@@ -87,7 +87,7 @@ describe HammerCLI::Output::Adapter::Base do
|
|
87
87
|
"\n"
|
88
88
|
].join("\n")
|
89
89
|
|
90
|
-
|
90
|
+
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
91
91
|
end
|
92
92
|
|
93
93
|
it "should field with nested data" do
|
@@ -97,7 +97,7 @@ describe HammerCLI::Output::Adapter::Base do
|
|
97
97
|
"\n"
|
98
98
|
].join("\n")
|
99
99
|
|
100
|
-
|
100
|
+
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
101
101
|
end
|
102
102
|
|
103
103
|
it "should print labeled fields" do
|
@@ -110,7 +110,7 @@ describe HammerCLI::Output::Adapter::Base do
|
|
110
110
|
"\n"
|
111
111
|
].join("\n")
|
112
112
|
|
113
|
-
|
113
|
+
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
114
114
|
end
|
115
115
|
|
116
116
|
|
@@ -127,7 +127,7 @@ describe HammerCLI::Output::Adapter::Base do
|
|
127
127
|
"\n"
|
128
128
|
].join("\n")
|
129
129
|
|
130
|
-
|
130
|
+
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
131
131
|
end
|
132
132
|
|
133
133
|
it "should print unnumbered collection" do
|
@@ -143,46 +143,46 @@ describe HammerCLI::Output::Adapter::Base do
|
|
143
143
|
"\n"
|
144
144
|
].join("\n")
|
145
145
|
|
146
|
-
|
146
|
+
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
147
147
|
end
|
148
148
|
|
149
149
|
it "hides ids by default" do
|
150
|
-
fields = [id,
|
150
|
+
fields = [id, firstname]
|
151
151
|
expected_output = [
|
152
152
|
"Name: John",
|
153
153
|
"\n"
|
154
154
|
].join("\n")
|
155
155
|
|
156
|
-
|
156
|
+
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
157
157
|
end
|
158
158
|
|
159
159
|
it "skips blank values" do
|
160
|
-
fields = [
|
160
|
+
fields = [firstname, blank]
|
161
161
|
expected_output = [
|
162
162
|
"Name: John",
|
163
163
|
"\n"
|
164
164
|
].join("\n")
|
165
165
|
|
166
|
-
|
166
|
+
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
167
167
|
end
|
168
168
|
|
169
169
|
it "does not print fields which data are missing from api by default" do
|
170
|
-
fields = [
|
170
|
+
fields = [firstname, login]
|
171
171
|
expected_output = [
|
172
172
|
"Name: John",
|
173
173
|
"\n"
|
174
174
|
].join("\n")
|
175
|
-
|
175
|
+
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
176
176
|
end
|
177
177
|
|
178
178
|
it "prints fields which data are missing from api when field has hide_missing flag set to false" do
|
179
|
-
fields = [
|
179
|
+
fields = [firstname, missing]
|
180
180
|
expected_output = [
|
181
181
|
"Name: John",
|
182
182
|
"Missing:",
|
183
183
|
"\n"
|
184
184
|
].join("\n")
|
185
|
-
|
185
|
+
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
186
186
|
end
|
187
187
|
|
188
188
|
it "should print key -> value" do
|
@@ -196,7 +196,7 @@ describe HammerCLI::Output::Adapter::Base do
|
|
196
196
|
"\n"
|
197
197
|
].join("\n")
|
198
198
|
|
199
|
-
|
199
|
+
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
200
200
|
end
|
201
201
|
|
202
202
|
context 'printing by chunks' do
|
@@ -208,16 +208,16 @@ describe HammerCLI::Output::Adapter::Base do
|
|
208
208
|
end
|
209
209
|
HammerCLI::Output::RecordCollection.new(collection)
|
210
210
|
end
|
211
|
-
let(:fields) { [id,
|
211
|
+
let(:fields) { [id, firstname] }
|
212
212
|
|
213
213
|
it 'prints single chunk' do
|
214
214
|
expected_output = collection_count.times.each_with_object([]) do |t, r|
|
215
215
|
r << ["Id: #{t}", "Name: John #{t}", "\n"].join("\n")
|
216
216
|
end.flatten(1).join
|
217
217
|
|
218
|
-
|
218
|
+
_{
|
219
219
|
adapter.print_collection(fields, collection_data)
|
220
|
-
|
220
|
+
}.must_output(expected_output)
|
221
221
|
end
|
222
222
|
|
223
223
|
it 'prints first chunk' do
|
@@ -225,11 +225,11 @@ describe HammerCLI::Output::Adapter::Base do
|
|
225
225
|
r << ["Id: #{t}", "Name: John #{t}", "\n"].join("\n")
|
226
226
|
end.flatten(1).join
|
227
227
|
|
228
|
-
|
228
|
+
_{
|
229
229
|
adapter.print_collection(
|
230
230
|
fields, collection_data[0...10], current_chunk: :first
|
231
231
|
)
|
232
|
-
|
232
|
+
}.must_output(expected_output)
|
233
233
|
end
|
234
234
|
|
235
235
|
it 'prints another chunk' do
|
@@ -237,11 +237,11 @@ describe HammerCLI::Output::Adapter::Base do
|
|
237
237
|
r << ["Id: #{t}", "Name: John #{t}", "\n"].join("\n")
|
238
238
|
end.flatten(1).join
|
239
239
|
|
240
|
-
|
240
|
+
_{
|
241
241
|
adapter.print_collection(
|
242
242
|
fields, collection_data[10...20], current_chunk: :another
|
243
243
|
)
|
244
|
-
|
244
|
+
}.must_output(expected_output)
|
245
245
|
end
|
246
246
|
|
247
247
|
it 'prints last chunk' do
|
@@ -249,11 +249,11 @@ describe HammerCLI::Output::Adapter::Base do
|
|
249
249
|
r << ["Id: #{t}", "Name: John #{t}", "\n"].join("\n")
|
250
250
|
end.flatten(1).join
|
251
251
|
|
252
|
-
|
252
|
+
_{
|
253
253
|
adapter.print_collection(
|
254
254
|
fields, collection_data[20...30], current_chunk: :last
|
255
255
|
)
|
256
|
-
|
256
|
+
}.must_output(expected_output)
|
257
257
|
end
|
258
258
|
end
|
259
259
|
|
@@ -262,14 +262,14 @@ describe HammerCLI::Output::Adapter::Base do
|
|
262
262
|
let(:context) { {:show_ids => true} }
|
263
263
|
|
264
264
|
it "shows ids if it's required in the context" do
|
265
|
-
fields = [id,
|
265
|
+
fields = [id, firstname]
|
266
266
|
expected_output = [
|
267
267
|
"Id: 112",
|
268
268
|
"Name: John",
|
269
269
|
"\n"
|
270
270
|
].join("\n")
|
271
271
|
|
272
|
-
|
272
|
+
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
273
273
|
end
|
274
274
|
|
275
275
|
end
|
@@ -280,13 +280,13 @@ describe HammerCLI::Output::Adapter::Base do
|
|
280
280
|
let(:context) { {:output_file => tempfile} }
|
281
281
|
|
282
282
|
it "should not print to stdout when --output-file is set" do
|
283
|
-
fields = [
|
283
|
+
fields = [firstname]
|
284
284
|
|
285
|
-
|
285
|
+
_{ adapter.print_collection(fields, data) }.must_output("")
|
286
286
|
end
|
287
287
|
|
288
288
|
it "should print to file if --output-file is set" do
|
289
|
-
fields = [
|
289
|
+
fields = [firstname]
|
290
290
|
expected_output = [
|
291
291
|
"Name: John",
|
292
292
|
"\n"
|
@@ -294,14 +294,14 @@ describe HammerCLI::Output::Adapter::Base do
|
|
294
294
|
|
295
295
|
adapter.print_collection(fields, data)
|
296
296
|
tempfile.close
|
297
|
-
IO.read(tempfile.path).must_equal(expected_output)
|
297
|
+
_(IO.read(tempfile.path)).must_equal(expected_output)
|
298
298
|
end
|
299
299
|
|
300
300
|
end
|
301
301
|
|
302
302
|
context 'print_message' do
|
303
303
|
it 'should print message with nil params' do
|
304
|
-
|
304
|
+
_{ adapter.print_message('MESSAGE', nil) }.must_output(/.*MESSAGE.*/, '')
|
305
305
|
end
|
306
306
|
end
|
307
307
|
end
|