brainstem 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +147 -0
  3. data/Gemfile.lock +68 -39
  4. data/lib/brainstem/api_docs.rb +9 -4
  5. data/lib/brainstem/api_docs/atlas.rb +3 -3
  6. data/lib/brainstem/api_docs/controller.rb +12 -4
  7. data/lib/brainstem/api_docs/controller_collection.rb +11 -2
  8. data/lib/brainstem/api_docs/endpoint.rb +17 -7
  9. data/lib/brainstem/api_docs/endpoint_collection.rb +9 -1
  10. data/lib/brainstem/api_docs/formatters/open_api_specification/helper.rb +19 -16
  11. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint/param_definitions_formatter.rb +52 -80
  12. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint/response_definitions_formatter.rb +64 -84
  13. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint_formatter.rb +1 -1
  14. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/endpoint_param_formatter.rb +39 -0
  15. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/presenter_field_formatter.rb +147 -0
  16. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/response_field_formatter.rb +146 -0
  17. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/presenter_formatter.rb +53 -55
  18. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/tags_formatter.rb +1 -1
  19. data/lib/brainstem/api_docs/presenter.rb +16 -8
  20. data/lib/brainstem/api_docs/presenter_collection.rb +8 -5
  21. data/lib/brainstem/api_docs/sinks/open_api_specification_sink.rb +3 -1
  22. data/lib/brainstem/cli/generate_api_docs_command.rb +4 -0
  23. data/lib/brainstem/concerns/controller_dsl.rb +90 -20
  24. data/lib/brainstem/concerns/presenter_dsl.rb +16 -8
  25. data/lib/brainstem/dsl/association.rb +12 -0
  26. data/lib/brainstem/dsl/fields_block.rb +1 -1
  27. data/lib/brainstem/version.rb +1 -1
  28. data/spec/brainstem/api_docs/controller_spec.rb +127 -5
  29. data/spec/brainstem/api_docs/endpoint_spec.rb +489 -57
  30. data/spec/brainstem/api_docs/formatters/open_api_specification/helper_spec.rb +15 -4
  31. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint/param_definitions_formatter_spec.rb +112 -66
  32. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint/response_definitions_formatter_spec.rb +404 -32
  33. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/endpoint_param_formatter_spec.rb +335 -0
  34. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/presenter_field_formatter_spec.rb +237 -0
  35. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/response_field_formatter_spec.rb +413 -0
  36. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/presenter_formatter_spec.rb +116 -4
  37. data/spec/brainstem/api_docs/presenter_spec.rb +406 -24
  38. data/spec/brainstem/cli/generate_api_docs_command_spec.rb +8 -0
  39. data/spec/brainstem/concerns/controller_dsl_spec.rb +606 -45
  40. data/spec/brainstem/concerns/presenter_dsl_spec.rb +34 -2
  41. data/spec/brainstem/dsl/association_spec.rb +54 -3
  42. metadata +11 -2
@@ -125,12 +125,26 @@ describe Brainstem::Concerns::PresenterDSL do
125
125
  end
126
126
 
127
127
  describe 'the nodoc! method' do
128
- before do
128
+ it "is stored in the configuration" do
129
+ presenter_class.nodoc! "Description for why these are nodoc"
130
+ expect(presenter_class.configuration[:nodoc]).to eq "Description for why these are nodoc"
131
+ end
132
+
133
+ it "is defaults to true" do
129
134
  presenter_class.nodoc!
135
+ expect(presenter_class.configuration[:nodoc]).to be true
130
136
  end
137
+ end
131
138
 
139
+ describe 'the internal! method' do
132
140
  it "is stored in the configuration" do
133
- expect(presenter_class.configuration[:nodoc]).to be true
141
+ presenter_class.internal! "Description for why these are internal docs"
142
+ expect(presenter_class.configuration[:internal]).to eq "Description for why these are internal docs"
143
+ end
144
+
145
+ it "is defaults to true" do
146
+ presenter_class.internal!
147
+ expect(presenter_class.configuration[:internal]).to be true
134
148
  end
135
149
  end
136
150
 
@@ -172,6 +186,24 @@ describe Brainstem::Concerns::PresenterDSL do
172
186
  expect(orders[:created_at][:info]).to eq "sorts by creation time"
173
187
  end
174
188
  end
189
+
190
+ context "when setting the direction" do
191
+ it "sets the direction to true by default" do
192
+ presenter_class.sort_order :created_at, value, info: "sorts by creation time"
193
+
194
+ expect(orders[:created_at][:direction]).to be_truthy
195
+ end
196
+
197
+ context "when direction is given" do
198
+ it "respects the given direction value" do
199
+ presenter_class.sort_order :created_at, value, info: "sorts by creation time", direction: false
200
+ presenter_class.sort_order :updated_at, value, info: "sorts by creation time", direction: true
201
+
202
+ expect(orders[:created_at][:direction]).to be_falsey
203
+ expect(orders[:updated_at][:direction]).to be_truthy
204
+ end
205
+ end
206
+ end
175
207
  end
176
208
 
177
209
  describe 'the conditional block' do
@@ -5,10 +5,13 @@ describe Brainstem::DSL::Association do
5
5
  let(:name) { :user }
6
6
  let(:target_class) { User }
7
7
  let(:description) { "This object's user" }
8
- let(:options) { { info: description } }
8
+ let(:type) { :belongs_to }
9
+ let(:response_key) { :user_id }
10
+ let(:polymorphic_classes) { [User, Task] }
11
+ let(:options) { { info: description, response_key: response_key, type: type, polymorphic_classes: polymorphic_classes } }
9
12
  let(:association) { Brainstem::DSL::Association.new(name, target_class, options) }
10
13
 
11
- describe 'description' do
14
+ describe '#description' do
12
15
  context 'when `info` is specified in the options' do
13
16
  it 'returns the value specified with the info key' do
14
17
  expect(association.description).to eq(description)
@@ -24,8 +27,56 @@ describe Brainstem::DSL::Association do
24
27
  end
25
28
  end
26
29
 
30
+ describe '#response_key' do
31
+ context 'when `response_key` is specified in the options' do
32
+ it 'returns the value specified with the response_key key' do
33
+ expect(association.response_key).to eq(response_key)
34
+ end
35
+ end
36
+
37
+ context 'when `response_key` is not specified in the options' do
38
+ let(:options) { {} }
39
+
40
+ it 'returns nil' do
41
+ expect(association.response_key).to be_nil
42
+ end
43
+ end
44
+ end
45
+
46
+ describe '#type' do
47
+ context 'when `type` is specified in the options' do
48
+ it 'returns the value specified with the type key' do
49
+ expect(association.type).to eq(type)
50
+ end
51
+ end
52
+
53
+ context 'when `type` is not specified in the options' do
54
+ let(:options) { {} }
55
+
56
+ it 'returns nil' do
57
+ expect(association.type).to be_nil
58
+ end
59
+ end
60
+ end
61
+
62
+ describe '#polymorphic_classes' do
63
+ context 'when `polymorphic_classes` is specified in the options' do
64
+ it 'returns the value specified with the polymorphic_classes key' do
65
+ expect(association.polymorphic_classes).to eq(polymorphic_classes)
66
+ end
67
+ end
68
+
69
+ context 'when `polymorphic_classes` is not specified in the options' do
70
+ let(:options) { {} }
71
+
72
+ it 'returns nil' do
73
+ expect(association.polymorphic_classes).to be_nil
74
+ end
75
+ end
76
+ end
77
+
27
78
  describe "#run_on" do
28
- let(:context) { { } }
79
+ let(:context) { {} }
29
80
 
30
81
  context 'with no special options' do
31
82
  it 'calls the method by name on the model' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brainstem
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mavenlink
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-24 00:00:00.000000000 Z
11
+ date: 2019-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -240,6 +240,9 @@ files:
240
240
  - lib/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint/response_definitions_formatter.rb
241
241
  - lib/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint_collection_formatter.rb
242
242
  - lib/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint_formatter.rb
243
+ - lib/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/endpoint_param_formatter.rb
244
+ - lib/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/presenter_field_formatter.rb
245
+ - lib/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/response_field_formatter.rb
243
246
  - lib/brainstem/api_docs/formatters/open_api_specification/version_2/info_formatter.rb
244
247
  - lib/brainstem/api_docs/formatters/open_api_specification/version_2/presenter_formatter.rb
245
248
  - lib/brainstem/api_docs/formatters/open_api_specification/version_2/security_definitions_formatter.rb
@@ -308,6 +311,9 @@ files:
308
311
  - spec/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint/response_definitions_formatter_spec.rb
309
312
  - spec/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint_collection_formatter_spec.rb
310
313
  - spec/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint_formatter_spec.rb
314
+ - spec/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/endpoint_param_formatter_spec.rb
315
+ - spec/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/presenter_field_formatter_spec.rb
316
+ - spec/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/response_field_formatter_spec.rb
311
317
  - spec/brainstem/api_docs/formatters/open_api_specification/version_2/info_formatter_spec.rb
312
318
  - spec/brainstem/api_docs/formatters/open_api_specification/version_2/presenter_formatter_spec.rb
313
319
  - spec/brainstem/api_docs/formatters/open_api_specification/version_2/security_definitions_formatter_spec.rb
@@ -400,6 +406,9 @@ test_files:
400
406
  - spec/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint/response_definitions_formatter_spec.rb
401
407
  - spec/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint_collection_formatter_spec.rb
402
408
  - spec/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint_formatter_spec.rb
409
+ - spec/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/endpoint_param_formatter_spec.rb
410
+ - spec/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/presenter_field_formatter_spec.rb
411
+ - spec/brainstem/api_docs/formatters/open_api_specification/version_2/field_definitions/response_field_formatter_spec.rb
403
412
  - spec/brainstem/api_docs/formatters/open_api_specification/version_2/info_formatter_spec.rb
404
413
  - spec/brainstem/api_docs/formatters/open_api_specification/version_2/presenter_formatter_spec.rb
405
414
  - spec/brainstem/api_docs/formatters/open_api_specification/version_2/security_definitions_formatter_spec.rb