brainstem 1.4.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +77 -0
  3. data/README.md +119 -0
  4. data/docs/api_doc_generator.markdown +45 -4
  5. data/docs/brainstem_executable.markdown +1 -1
  6. data/docs/oas_2_docgen.png +0 -0
  7. data/docs/oas_2_docgen_ascii.txt +78 -0
  8. data/lib/brainstem/api_docs.rb +23 -9
  9. data/lib/brainstem/api_docs/abstract_collection.rb +0 -13
  10. data/lib/brainstem/api_docs/atlas.rb +0 -14
  11. data/lib/brainstem/api_docs/builder.rb +0 -14
  12. data/lib/brainstem/api_docs/controller.rb +7 -16
  13. data/lib/brainstem/api_docs/controller_collection.rb +0 -3
  14. data/lib/brainstem/api_docs/endpoint.rb +73 -19
  15. data/lib/brainstem/api_docs/endpoint_collection.rb +0 -7
  16. data/lib/brainstem/api_docs/formatters/abstract_formatter.rb +0 -2
  17. data/lib/brainstem/api_docs/formatters/markdown/controller_formatter.rb +1 -9
  18. data/lib/brainstem/api_docs/formatters/markdown/endpoint_collection_formatter.rb +1 -9
  19. data/lib/brainstem/api_docs/formatters/markdown/endpoint_formatter.rb +39 -24
  20. data/lib/brainstem/api_docs/formatters/markdown/helper.rb +0 -13
  21. data/lib/brainstem/api_docs/formatters/markdown/presenter_formatter.rb +22 -35
  22. data/lib/brainstem/api_docs/formatters/open_api_specification/helper.rb +66 -0
  23. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/controller_formatter.rb +57 -0
  24. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint/param_definitions_formatter.rb +311 -0
  25. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint/response_definitions_formatter.rb +197 -0
  26. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint_collection_formatter.rb +60 -0
  27. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint_formatter.rb +162 -0
  28. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/info_formatter.rb +126 -0
  29. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/presenter_formatter.rb +132 -0
  30. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/security_definitions_formatter.rb +99 -0
  31. data/lib/brainstem/api_docs/formatters/open_api_specification/version_2/tags_formatter.rb +123 -0
  32. data/lib/brainstem/api_docs/introspectors/abstract_introspector.rb +0 -7
  33. data/lib/brainstem/api_docs/introspectors/rails_introspector.rb +1 -20
  34. data/lib/brainstem/api_docs/presenter.rb +21 -27
  35. data/lib/brainstem/api_docs/presenter_collection.rb +1 -11
  36. data/lib/brainstem/api_docs/resolver.rb +1 -8
  37. data/lib/brainstem/api_docs/sinks/abstract_sink.rb +0 -4
  38. data/lib/brainstem/api_docs/sinks/controller_presenter_multifile_sink.rb +0 -9
  39. data/lib/brainstem/api_docs/sinks/open_api_specification_sink.rb +234 -0
  40. data/lib/brainstem/api_docs/sinks/stdout_sink.rb +0 -5
  41. data/lib/brainstem/cli.rb +0 -13
  42. data/lib/brainstem/cli/abstract_command.rb +0 -7
  43. data/lib/brainstem/cli/generate_api_docs_command.rb +48 -24
  44. data/lib/brainstem/concerns/controller_dsl.rb +288 -145
  45. data/lib/brainstem/concerns/formattable.rb +0 -5
  46. data/lib/brainstem/concerns/optional.rb +0 -1
  47. data/lib/brainstem/concerns/presenter_dsl.rb +2 -21
  48. data/lib/brainstem/dsl/configuration.rb +0 -11
  49. data/lib/brainstem/presenter.rb +0 -4
  50. data/lib/brainstem/version.rb +1 -1
  51. data/spec/brainstem/api_docs/abstract_collection_spec.rb +0 -11
  52. data/spec/brainstem/api_docs/atlas_spec.rb +0 -6
  53. data/spec/brainstem/api_docs/builder_spec.rb +0 -4
  54. data/spec/brainstem/api_docs/controller_collection_spec.rb +0 -2
  55. data/spec/brainstem/api_docs/controller_spec.rb +29 -18
  56. data/spec/brainstem/api_docs/endpoint_collection_spec.rb +0 -6
  57. data/spec/brainstem/api_docs/endpoint_spec.rb +343 -13
  58. data/spec/brainstem/api_docs/formatters/abstract_formatter_spec.rb +0 -2
  59. data/spec/brainstem/api_docs/formatters/markdown/controller_formatter_spec.rb +0 -1
  60. data/spec/brainstem/api_docs/formatters/markdown/endpoint_collection_formatter_spec.rb +0 -5
  61. data/spec/brainstem/api_docs/formatters/markdown/endpoint_formatter_spec.rb +94 -8
  62. data/spec/brainstem/api_docs/formatters/markdown/helper_spec.rb +0 -8
  63. data/spec/brainstem/api_docs/formatters/markdown/presenter_formatter_spec.rb +0 -7
  64. data/spec/brainstem/api_docs/formatters/open_api_specification/helper_spec.rb +210 -0
  65. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/controller_formatter_spec.rb +81 -0
  66. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint/param_definitions_formatter_spec.rb +672 -0
  67. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint/response_definitions_formatter_spec.rb +335 -0
  68. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint_collection_formatter_spec.rb +59 -0
  69. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/endpoint_formatter_spec.rb +308 -0
  70. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/info_formatter_spec.rb +89 -0
  71. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/presenter_formatter_spec.rb +430 -0
  72. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/security_definitions_formatter_spec.rb +190 -0
  73. data/spec/brainstem/api_docs/formatters/open_api_specification/version_2/tags_formatter_spec.rb +217 -0
  74. data/spec/brainstem/api_docs/introspectors/abstract_introspector_spec.rb +0 -2
  75. data/spec/brainstem/api_docs/introspectors/rails_introspector_spec.rb +0 -2
  76. data/spec/brainstem/api_docs/presenter_collection_spec.rb +0 -2
  77. data/spec/brainstem/api_docs/presenter_spec.rb +58 -18
  78. data/spec/brainstem/api_docs/resolver_spec.rb +0 -1
  79. data/spec/brainstem/api_docs/sinks/controller_presenter_multifile_sink_spec.rb +0 -2
  80. data/spec/brainstem/api_docs/sinks/open_api_specification_sink_spec.rb +371 -0
  81. data/spec/brainstem/api_docs_spec.rb +2 -0
  82. data/spec/brainstem/cli/abstract_command_spec.rb +0 -4
  83. data/spec/brainstem/cli/generate_api_docs_command_spec.rb +53 -2
  84. data/spec/brainstem/concerns/controller_dsl_spec.rb +430 -64
  85. data/spec/brainstem/concerns/presenter_dsl_spec.rb +0 -20
  86. data/spec/brainstem/preloader_spec.rb +0 -7
  87. data/spec/brainstem/presenter_spec.rb +0 -1
  88. data/spec/dummy/rails.rb +0 -1
  89. data/spec/spec_helpers/db.rb +0 -1
  90. metadata +37 -2
@@ -1,28 +1,23 @@
1
1
  require 'brainstem/api_docs'
2
2
  require 'active_support/inflector/inflections'
3
3
 
4
-
5
4
  module Brainstem
6
5
  module Concerns
7
6
  module Formattable
8
7
  attr_writer :formatters
9
8
 
10
-
11
9
  def valid_options
12
10
  super | [ :formatters ]
13
11
  end
14
12
 
15
-
16
13
  def formatters
17
14
  @formatters ||= ::Brainstem::ApiDocs::FORMATTERS[formatter_type]
18
15
  end
19
16
 
20
-
21
17
  def formatted_as(format, options = {})
22
18
  formatters[format].call(self, options)
23
19
  end
24
20
 
25
-
26
21
  #
27
22
  # Declares the type of formatter that should be used to format an entity
28
23
  # of this class.
@@ -34,7 +34,6 @@ module Brainstem
34
34
  [ ]
35
35
  end
36
36
 
37
-
38
37
  def initialize(options = {})
39
38
  options.slice(*valid_options).each {|k, v| self.send("#{k}=", v) }
40
39
  end
@@ -10,7 +10,6 @@ require 'brainstem/dsl/conditionals_block'
10
10
  require 'brainstem/dsl/fields_block'
11
11
  require 'brainstem/dsl/associations_block'
12
12
 
13
-
14
13
  require 'active_support/core_ext/array/extract_options'
15
14
 
16
15
  module Brainstem
@@ -70,7 +69,6 @@ module Brainstem
70
69
  end
71
70
  end
72
71
 
73
-
74
72
  # @overload default_sort_order(sort_string)
75
73
  # Sets a default sort order.
76
74
  # @param [String] sort_string The sort order to apply by default
@@ -86,7 +84,6 @@ module Brainstem
86
84
  configuration[:default_sort_order]
87
85
  end
88
86
 
89
-
90
87
  #
91
88
  # @overload sort_order(name, order, options)
92
89
  # @param [Symbol] name The name of the sort order.
@@ -121,7 +118,6 @@ module Brainstem
121
118
  })
122
119
  end
123
120
 
124
-
125
121
  #
126
122
  # @overload filter(name, type, options = {})
127
123
  # @param [Symbol] name The name of the scope that may be applied as a
@@ -142,13 +138,8 @@ module Brainstem
142
138
  # @yieldreturn [ActiveRecord::Relation] A new scope that filters the
143
139
  # scope that was yielded.
144
140
  #
145
- def filter(name, type = DEFAULT_FILTER_DATA_TYPE, options = {}, &block)
146
- if type.is_a?(Hash)
147
- options = type if options.blank?
148
- type = DEFAULT_FILTER_DATA_TYPE
149
-
150
- deprecated_type_warning
151
- elsif type.to_s == 'array'
141
+ def filter(name, type, options = {}, &block)
142
+ if type.to_s == 'array'
152
143
  options[:item_type] = options[:item_type].to_s.presence || DEFAULT_FILTER_DATA_TYPE
153
144
  end
154
145
 
@@ -189,16 +180,6 @@ module Brainstem
189
180
 
190
181
  DEFAULT_FILTER_DATA_TYPE = 'string'
191
182
  private_constant :DEFAULT_FILTER_DATA_TYPE
192
-
193
- def deprecated_type_warning
194
- ActiveSupport::Deprecation.warn(
195
- 'Please specify the `type` of the filter as the second argument. If not specified, '\
196
- 'it will default to `:string`. This default behavior will be deprecated in the next major '\
197
- 'version and will need to be explicitly specified. '\
198
- 'e.g. `filter :status, :string, items: ["Started", "Completed"]`',
199
- caller
200
- )
201
- end
202
183
  end
203
184
  end
204
185
  end
@@ -60,7 +60,6 @@ module Brainstem
60
60
  @storage[key] ||= InheritableAppendSet.new
61
61
  end
62
62
 
63
-
64
63
  #
65
64
  # Marks a key in the configuration as nonheritable, which means that the key:
66
65
  #
@@ -82,10 +81,8 @@ module Brainstem
82
81
  self.nonheritable_keys << formatted_key unless self.nonheritable_keys.include?(formatted_key)
83
82
  end
84
83
 
85
-
86
84
  attr_accessor :nonheritable_keys
87
85
 
88
-
89
86
  #
90
87
  # Returns the keys in this configuration object that are visible to child
91
88
  # configuration objects (i.e. heritable keys).
@@ -96,7 +93,6 @@ module Brainstem
96
93
  keys - nonheritable_keys.to_a
97
94
  end
98
95
 
99
-
100
96
  #
101
97
  # Returns a hash of this object's storage, less those pairs that are
102
98
  # not visible to children.
@@ -107,7 +103,6 @@ module Brainstem
107
103
  to_h.select {|k, v| keys_visible_to_children.include?(format_key(k)) }
108
104
  end
109
105
 
110
-
111
106
  #
112
107
  # Returns the union of all keys in this configuration plus those that are
113
108
  # heritable in the parent.
@@ -122,7 +117,6 @@ module Brainstem
122
117
  end
123
118
  end
124
119
 
125
-
126
120
  #
127
121
  # Returns a list of nonheritable keys for the parent configuration, if
128
122
  # the parent configuration actually keeps track of it. Otherwise returns
@@ -139,7 +133,6 @@ module Brainstem
139
133
  end
140
134
  end
141
135
 
142
-
143
136
  #
144
137
  # Returns whether a key is nonheritable in this configuration object's
145
138
  # parent configuration.
@@ -153,7 +146,6 @@ module Brainstem
153
146
  parent_nonheritable_keys.include?(format_key(key.first))
154
147
  end
155
148
 
156
-
157
149
  #
158
150
  # An inversion of +key_nonheritable_in_parent+. Returns true if the
159
151
  # key is not marked as nonheritable in the parent configuration.
@@ -167,7 +159,6 @@ module Brainstem
167
159
  !key_nonheritable_in_parent?(format_key(key.first))
168
160
  end
169
161
 
170
-
171
162
  #
172
163
  # Returns a hash of this object's storage merged over the heritable pairs
173
164
  # of its parent configurations.
@@ -182,7 +173,6 @@ module Brainstem
182
173
  end
183
174
  end
184
175
 
185
-
186
176
  #
187
177
  # Returns the value for the given key, or if it could not be found:
188
178
  # - Raises a +KeyError+ if not passed a default or a block;
@@ -210,7 +200,6 @@ module Brainstem
210
200
  end
211
201
  end
212
202
 
213
-
214
203
  def has_key?(key)
215
204
  @storage.has_key?(key) ||
216
205
  (@parent_configuration.has_key?(key) &&
@@ -26,7 +26,6 @@ module Brainstem
26
26
  @presents
27
27
  end
28
28
 
29
-
30
29
  #
31
30
  # Returns the set of possible brainstem keys for the classes presented.
32
31
  #
@@ -39,7 +38,6 @@ module Brainstem
39
38
  end
40
39
  end
41
40
 
42
-
43
41
  # Return the second-to-last module in the name of this presenter, which Brainstem considers to be the 'namespace'.
44
42
  # E.g., Api::V1::FooPresenter has a namespace of "V1".
45
43
  # @return [String] The name of the second-to-last module containing this presenter.
@@ -410,12 +408,10 @@ module Brainstem
410
408
  end
411
409
  end
412
410
 
413
-
414
411
  def self.presenter_collection
415
412
  Brainstem.presenter_collection(namespace)
416
413
  end
417
414
 
418
-
419
415
  # @api protected
420
416
  # Find the global presenter collection for our namespace.
421
417
  def presenter_collection
@@ -1,3 +1,3 @@
1
1
  module Brainstem
2
- VERSION = "1.4.1"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -18,7 +18,6 @@ module Brainstem
18
18
  end
19
19
  end
20
20
 
21
-
22
21
  describe "#<<" do
23
22
  it "adds a member to the collection" do
24
23
  subject << member
@@ -31,7 +30,6 @@ module Brainstem
31
30
  end
32
31
  end
33
32
 
34
-
35
33
  describe "#each" do
36
34
  it "iterates over each member" do
37
35
  subject << members
@@ -39,13 +37,11 @@ module Brainstem
39
37
  end
40
38
  end
41
39
 
42
-
43
40
  describe "iteration" do
44
41
  before do
45
42
  subject << member
46
43
  end
47
44
 
48
-
49
45
  describe "#filenames" do
50
46
  it "maps all its members" do
51
47
  stub(member).formatted_as(:markdown, {}) { "blah" }
@@ -54,7 +50,6 @@ module Brainstem
54
50
  end
55
51
  end
56
52
 
57
-
58
53
  describe "#each_filename" do
59
54
  it "maps all its controllers and yields each in turn" do
60
55
  stub(member).formatted_as(:markdown, {}) { "blah" }
@@ -64,7 +59,6 @@ module Brainstem
64
59
  end
65
60
  end
66
61
 
67
-
68
62
  describe "#formatted" do
69
63
  it "maps all its members" do
70
64
  mock(member).formatted_as(:markdown, {}) { "blah" }
@@ -82,7 +76,6 @@ module Brainstem
82
76
  end
83
77
  end
84
78
 
85
-
86
79
  describe "#formatted_with_filename" do
87
80
  it "maps all its members and filenames" do
88
81
  mock(member).formatted_as(:markdown, {}) { "blah" }
@@ -105,7 +98,6 @@ module Brainstem
105
98
  end
106
99
  end
107
100
 
108
-
109
101
  describe "#each_formatted" do
110
102
  it "maps all its controllers and yields each in turn" do
111
103
  mock(member).formatted_as(:markdown, {}) { "blah" }
@@ -120,7 +112,6 @@ module Brainstem
120
112
  end
121
113
  end
122
114
 
123
-
124
115
  describe "#each_formatted_with_filename" do
125
116
  it "maps all its controllers and filenames and yields each in turn" do
126
117
  mock(member).formatted_as(:markdown, {}) { "blah" }
@@ -139,7 +130,6 @@ module Brainstem
139
130
  end
140
131
  end
141
132
 
142
-
143
133
  describe ".with_members" do
144
134
  subject { described_class.with_members(atlas, member) }
145
135
 
@@ -147,7 +137,6 @@ module Brainstem
147
137
  expect(subject).to be_a described_class
148
138
  expect(subject.send(:members)).to eq [ member ]
149
139
  end
150
-
151
140
  end
152
141
 
153
142
  it_behaves_like "atlas taker"
@@ -36,7 +36,6 @@ module Brainstem
36
36
  end
37
37
  end
38
38
 
39
-
40
39
  describe "validation" do
41
40
  before do
42
41
  any_instance_of(Atlas) do |instance|
@@ -166,7 +165,6 @@ module Brainstem
166
165
  end
167
166
  end
168
167
 
169
-
170
168
  context "when a route is invalid" do
171
169
  let(:route_2) { {
172
170
  path: "/endpoint2",
@@ -202,7 +200,6 @@ module Brainstem
202
200
  end
203
201
  end
204
202
 
205
-
206
203
  describe "#extract_presenters!" do
207
204
  let(:endpoint_1) { Object.new }
208
205
  let(:endpoint_2) { Object.new }
@@ -249,7 +246,6 @@ module Brainstem
249
246
  end
250
247
  end
251
248
 
252
-
253
249
  describe "#valid?" do
254
250
  before do
255
251
  any_instance_of(Atlas) do |instance|
@@ -282,7 +278,6 @@ module Brainstem
282
278
  end
283
279
  end
284
280
 
285
-
286
281
  describe "#allow_route?" do
287
282
  before do
288
283
  any_instance_of(Atlas) do |instance|
@@ -331,7 +326,6 @@ module Brainstem
331
326
  end
332
327
  end
333
328
 
334
-
335
329
  describe "#find_by_class" do
336
330
  before do
337
331
  any_instance_of(Atlas) do |instance|
@@ -16,7 +16,6 @@ module Brainstem
16
16
 
17
17
  subject { Builder.new(default_options.merge(options)) }
18
18
 
19
-
20
19
  describe "#initialize" do
21
20
  let(:introspector_method) { Object.new }
22
21
  let(:options) { { introspector_method: introspector_method } }
@@ -35,7 +34,6 @@ module Brainstem
35
34
  end
36
35
  end
37
36
 
38
-
39
37
  describe "introspection" do
40
38
  let(:introspector_method) { Object.new }
41
39
  let(:args_for_introspector) { { blah: true } }
@@ -55,7 +53,6 @@ module Brainstem
55
53
  end
56
54
  end
57
55
 
58
-
59
56
  it "passes the introspector method the introspector options" do
60
57
  mock(introspector_method).call(args_for_introspector)
61
58
  subject
@@ -67,7 +64,6 @@ module Brainstem
67
64
  end
68
65
  end
69
66
 
70
-
71
67
  describe "modeling" do
72
68
  let(:introspector) { Object.new }
73
69
  let(:atlas_method) { Object.new }
@@ -36,7 +36,6 @@ module Brainstem
36
36
  end
37
37
  end
38
38
 
39
-
40
39
  describe "#create_from_route" do
41
40
  it "creates a new controller, adding it to the members" do
42
41
  controller = subject.create_from_route(
@@ -55,7 +54,6 @@ module Brainstem
55
54
  end
56
55
  end
57
56
 
58
-
59
57
  describe "#find_or_create_from_route" do
60
58
  let!(:existing_controller) { subject.create_from_route(
61
59
  path: "/posts",
@@ -15,7 +15,6 @@ module Brainstem
15
15
  end
16
16
  end
17
17
 
18
-
19
18
  describe "#add_endpoint" do
20
19
  let(:endpoint) { Object.new }
21
20
 
@@ -26,7 +25,6 @@ module Brainstem
26
25
  end
27
26
  end
28
27
 
29
-
30
28
  describe "derived fields" do
31
29
  let(:lorem) { "lorem ipsum dolor sit amet" }
32
30
  let(:const) { Object.new }
@@ -46,7 +44,6 @@ module Brainstem
46
44
  end
47
45
  end
48
46
 
49
-
50
47
  describe "configuration helpers" do
51
48
  describe "#contextual_documentation" do
52
49
  let(:default_config) { { title: { info: info, nodoc: nodoc } } }
@@ -93,7 +90,6 @@ module Brainstem
93
90
  end
94
91
  end
95
92
 
96
-
97
93
  describe "#default_configuration" do
98
94
  let(:default_config) { { title: nil } }
99
95
 
@@ -103,25 +99,45 @@ module Brainstem
103
99
  end
104
100
  end
105
101
 
102
+ describe "#tag" do
103
+ let(:default_config) { { tag: tag } }
106
104
 
107
- describe "#nodoc?" do
108
- let(:default_config) { { nodoc: nodoc } }
109
-
110
- context "when nodoc in default" do
111
- let(:nodoc) { true }
105
+ context "when tag in specified" do
106
+ let(:tag) { 'Tag Name' }
112
107
 
113
108
  it "is true" do
114
- expect(subject.nodoc?).to eq true
109
+ expect(subject.tag).to eq(tag)
115
110
  end
116
111
  end
117
112
 
118
- context "when not nodoc in default" do
119
- it "is false" do
120
- expect(subject.nodoc?).to eq false
113
+ context "when tag is not specified" do
114
+ let(:tag) { nil }
115
+
116
+ it "is nil" do
117
+ expect(subject.tag).to eq(nil)
121
118
  end
122
119
  end
123
120
  end
124
121
 
122
+ describe "#tag_groups" do
123
+ let(:default_config) { { tag_groups: tag_groups } }
124
+
125
+ context "when tag groups are specified" do
126
+ let(:tag_groups) { ['Group 1', 'Group 2'] }
127
+
128
+ it "is true" do
129
+ expect(subject.tag_groups).to eq(tag_groups)
130
+ end
131
+ end
132
+
133
+ context "when tag_groups are not specified" do
134
+ let(:tag_groups) { nil }
135
+
136
+ it "is nil" do
137
+ expect(subject.tag_groups).to eq(nil)
138
+ end
139
+ end
140
+ end
125
141
 
126
142
  describe "#title" do
127
143
  context "when present" do
@@ -149,7 +165,6 @@ module Brainstem
149
165
  end
150
166
  end
151
167
 
152
-
153
168
  describe "#description" do
154
169
  context "when present" do
155
170
  let(:default_config) { { description: { info: lorem, nodoc: nodoc } } }
@@ -177,7 +192,6 @@ module Brainstem
177
192
  end
178
193
  end
179
194
 
180
-
181
195
  describe "#suggested_filename" do
182
196
  let(:const) { Object.new }
183
197
 
@@ -187,7 +201,6 @@ module Brainstem
187
201
  end
188
202
  end
189
203
 
190
-
191
204
  it "gsubs namespace, filename and extension" do
192
205
  instance = described_class.new(atlas,
193
206
  filename_pattern: "controllers/{{namespace}}/{{name}}_controller.{{extension}}",
@@ -202,7 +215,6 @@ module Brainstem
202
215
  end
203
216
  end
204
217
 
205
-
206
218
  describe "#suggested_filename_link" do
207
219
  it "gsubs filename and extension" do
208
220
 
@@ -217,7 +229,6 @@ module Brainstem
217
229
  end
218
230
  end
219
231
 
220
-
221
232
  it_behaves_like "formattable"
222
233
  it_behaves_like "atlas taker"
223
234
  end