magic_lamp 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +163 -33
  3. data/VERSION +1 -0
  4. data/app/assets/javascripts/magic_lamp/genie.js +1 -1
  5. data/lib/magic_lamp.rb +50 -39
  6. data/lib/magic_lamp/configuration.rb +2 -1
  7. data/lib/magic_lamp/constants.rb +24 -0
  8. data/lib/magic_lamp/defaults_manager.rb +62 -0
  9. data/lib/magic_lamp/fixture_creator.rb +13 -3
  10. data/lib/magic_lamp/version.rb +1 -1
  11. data/spec/dummy/app/views/orders/needs_extending.html.erb +2 -0
  12. data/spec/dummy/log/development.log +51060 -0
  13. data/spec/dummy/log/test.log +244175 -0
  14. data/spec/dummy/spec/magical/a_lamp_file_with_a_different_name_lamp.rb +57 -0
  15. data/spec/dummy/tmp/cache/assets/development/sprockets/04a1e26a9e3fde1f448cb2a9d382fbbc +0 -0
  16. data/spec/dummy/tmp/cache/assets/development/sprockets/09bc89d8ac4ccacfcf2f4db466e7735f +0 -0
  17. data/spec/dummy/tmp/cache/assets/development/sprockets/0b3144442052dbb8af7f57ca27cd7a15 +0 -0
  18. data/spec/dummy/tmp/cache/assets/development/sprockets/18650d8ff9b0a83b32e55b58917ec791 +0 -0
  19. data/spec/dummy/tmp/cache/assets/development/sprockets/292405ba7ff52dbb279572aee49ba174 +0 -0
  20. data/spec/dummy/tmp/cache/assets/development/sprockets/2ccef21649a61deac2c84f622753b77b +0 -0
  21. data/spec/dummy/tmp/cache/assets/development/sprockets/32b0c6aea545968d6da4939bcbab9b5e +0 -0
  22. data/spec/dummy/tmp/cache/assets/development/sprockets/3823434d99b44359ee75dffba2817055 +0 -0
  23. data/spec/dummy/tmp/cache/assets/development/sprockets/3a2dd1069a3d0cd57769e33920561e09 +0 -0
  24. data/spec/dummy/tmp/cache/assets/development/sprockets/3c8cdd0e5d5eee39df490048c656a2c5 +0 -0
  25. data/spec/dummy/tmp/cache/assets/development/sprockets/40f78fd7fa893a3ba0bb52949d4d6e21 +0 -0
  26. data/spec/dummy/tmp/cache/assets/development/sprockets/51333e0ed6511483c511470803d3803a +0 -0
  27. data/spec/dummy/tmp/cache/assets/development/sprockets/5b03eeac2e4ecbaaf227c5aa35808fee +0 -0
  28. data/spec/dummy/tmp/cache/assets/development/sprockets/5bbf09297502a156801e9c65f4bd3db7 +0 -0
  29. data/spec/dummy/tmp/cache/assets/development/sprockets/6f968441247482ba7e1ac7ce9f34dfdb +0 -0
  30. data/spec/dummy/tmp/cache/assets/development/sprockets/759e97d6d411bc4cef7055a778e1bef3 +0 -0
  31. data/spec/dummy/tmp/cache/assets/development/sprockets/7f5b2f45d9f12db1fb26a605759b360a +0 -0
  32. data/spec/dummy/tmp/cache/assets/development/sprockets/7f7dcf7837dbb7f150b7364ad7920712 +0 -0
  33. data/spec/dummy/tmp/cache/assets/development/sprockets/80a68d71946643e61d91cc216f7aa32f +0 -0
  34. data/spec/dummy/tmp/cache/assets/development/sprockets/86023efec2465a88617e5a47a38f1f55 +0 -0
  35. data/spec/dummy/tmp/cache/assets/development/sprockets/87c6d9a5c985ccb321255862fd8c2f48 +0 -0
  36. data/spec/dummy/tmp/cache/assets/development/sprockets/88fe64427f1fff8e41ca8ad0170da88a +0 -0
  37. data/spec/dummy/tmp/cache/assets/development/sprockets/8a0862dca044d19cadb655c53acb20ab +0 -0
  38. data/spec/dummy/tmp/cache/assets/development/sprockets/8ed4b4f20fb65446181984e6df7d7c9b +0 -0
  39. data/spec/dummy/tmp/cache/assets/development/sprockets/8f4a370f455559b7a209ecd758a3bb3d +0 -0
  40. data/spec/dummy/tmp/cache/assets/development/sprockets/96210dc070e479fcee862294afe5efc1 +0 -0
  41. data/spec/dummy/tmp/cache/assets/development/sprockets/972b6b0bb1fc0b1123077b4b2f4394bd +0 -0
  42. data/spec/dummy/tmp/cache/assets/development/sprockets/9825272284630c2926f661645205382a +0 -0
  43. data/spec/dummy/tmp/cache/assets/development/sprockets/acbd4771ecb2a173a35382fbff9317cf +0 -0
  44. data/spec/dummy/tmp/cache/assets/development/sprockets/b226a96bfa85a5a853dd6566d1706231 +0 -0
  45. data/spec/dummy/tmp/cache/assets/development/sprockets/b2a142b210c2cbfe4a58040684b3c33c +0 -0
  46. data/spec/dummy/tmp/cache/assets/development/sprockets/bb57f340ac9df9041014540af079a7f3 +0 -0
  47. data/spec/dummy/tmp/cache/assets/development/sprockets/bfa154e8a12acdbc85028ad8130d9043 +0 -0
  48. data/spec/dummy/tmp/cache/assets/development/sprockets/c84af5f8f55b15818667b16b15416431 +0 -0
  49. data/spec/dummy/tmp/cache/assets/development/sprockets/cf573b52d944e8aea7f1dc03f9be9b2c +0 -0
  50. data/spec/dummy/tmp/cache/assets/development/sprockets/d98de652252dc6ae11b5b6db5588705b +0 -0
  51. data/spec/dummy/tmp/cache/assets/development/sprockets/f0aa53eb377a5d7cc83657ef33b02d25 +0 -0
  52. data/spec/dummy/tmp/cache/assets/development/sprockets/f12e838fbbcc1647156ec47ebbeaac9a +0 -0
  53. data/spec/dummy/tmp/cache/assets/development/sprockets/f30abc368796858ff89a5ff6daf33e6a +0 -0
  54. data/spec/dummy/tmp/cache/assets/development/sprockets/f5d1b7d2ec1c89dc32cc982b43502dc8 +0 -0
  55. data/spec/dummy/tmp/cache/assets/development/sprockets/f5e8036e8de24870e4db21ccb209e272 +0 -0
  56. data/spec/dummy/tmp/cache/assets/development/sprockets/f6256b2e4e609981d9eb420aae5bef46 +0 -0
  57. data/spec/dummy/tmp/cache/assets/development/sprockets/f62fb3331d14ad448ad997f1fbdb7e23 +0 -0
  58. data/spec/dummy/tmp/cache/assets/development/sprockets/fd203e335fb22b3109d0354b99f45c6e +0 -0
  59. data/spec/dummy/tmp/cache/assets/development/sprockets/fdc3718e0a84d340a897f87179d95c84 +0 -0
  60. data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  61. data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  62. data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  63. data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  64. data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  65. data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  66. data/spec/javascripts/genie_spec.js +12 -2
  67. data/spec/javascripts/magic_lamp_spec.js +14 -1
  68. data/spec/lib/callbacks_spec.rb +1 -2
  69. data/spec/lib/configuration_spec.rb +8 -8
  70. data/spec/lib/defaults_manager_spec.rb +160 -0
  71. data/spec/lib/fixture_creator_spec.rb +31 -8
  72. data/spec/lib/magic_lamp_spec.rb +147 -54
  73. data/spec/lib/render_catcher_spec.rb +1 -2
  74. data/spec/spec_helper.rb +26 -0
  75. data/spec/tasks/fixture_names_task_spec.rb +4 -12
  76. data/spec/tasks/lint_task_spec.rb +4 -10
  77. metadata +40 -4
@@ -2,22 +2,35 @@ require "rails_helper"
2
2
 
3
3
  describe MagicLamp do
4
4
  context "attr_accessor" do
5
- it { is_expected.to respond_to :registered_fixtures }
6
- it { is_expected.to respond_to :registered_fixtures= }
7
-
8
- it { is_expected.to respond_to :configuration }
9
- it { is_expected.to respond_to :configuration= }
5
+ it { is_expected.to attr_accessorize(:registered_fixtures) }
6
+ it { is_expected.to attr_accessorize(:configuration) }
10
7
  end
11
8
 
12
9
  context "aliases" do
13
- let(:register_fixture) { subject.method(:register_fixture) }
10
+ MagicLamp::REGISTER_FIXTURE_ALIASES.each do |method_name|
11
+ it { is_expected.to alias_the_method(:register_fixture).to(method_name) }
12
+ end
13
+ end
14
14
 
15
- it "rub is the same as register_fixture" do
16
- expect(subject.method(:rub)).to eq(register_fixture)
15
+ describe "#define" do
16
+ let(:block) { proc { "foo" } }
17
+ let(:options) { { foo: :bar } }
18
+
19
+ it "creates a new defaults manager and evaluates the block in its context" do
20
+ suspect = subject.define(options) do |block_arg|
21
+ @foo = "foo"
22
+ end
23
+ expect(suspect).to be_a(MagicLamp::DefaultsManager)
24
+ expect(suspect.instance_variable_get(:@foo)).to eq("foo")
25
+ expect(suspect.configuration).to eq(subject.configuration)
26
+ expect(suspect.defaults).to eq(options)
27
+ expect(suspect.parent).to be_nil
17
28
  end
18
29
 
19
- it "wish is the same as register_fixture" do
20
- expect(subject.method(:wish)).to eq(register_fixture)
30
+ it "raises an error if it's not given a block" do
31
+ expect do
32
+ subject.define
33
+ end.to raise_error(MagicLamp::ArgumentError, /define requires a block/)
21
34
  end
22
35
  end
23
36
 
@@ -53,12 +66,16 @@ describe MagicLamp do
53
66
 
54
67
  describe "#register_fixture" do
55
68
  let(:fixture_name) { "foo" }
56
- let(:controller_class) { "doesn't matter here" }
69
+ let(:controller_class) { ::ApplicationController }
57
70
  let(:block) { proc { "so?" } }
58
-
59
- it "caches the controller class and block" do
60
- subject.register_fixture(controller: controller_class, name: fixture_name, &block)
61
- expect(subject.registered_fixtures[fixture_name]).to eq([controller_class, block])
71
+ let(:extensions) { [1, 2, 3] }
72
+
73
+ it "caches the controller class, block, and extensions" do
74
+ subject.register_fixture(controller: controller_class, name: fixture_name, extend: extensions, &block)
75
+ at_fixture_name = subject.registered_fixtures[fixture_name]
76
+ expect(at_fixture_name[:controller]).to eq(controller_class)
77
+ expect(at_fixture_name[:render_block]).to eq(block)
78
+ expect(at_fixture_name[:extend]).to eq(extensions)
62
79
  end
63
80
 
64
81
  it "raises an error without a block" do
@@ -67,7 +84,7 @@ describe MagicLamp do
67
84
  end.to raise_error(MagicLamp::ArgumentError, /register_fixture requires a block/)
68
85
  end
69
86
 
70
- context "don't infer names" do
87
+ context "without name inference" do
71
88
  it "raises an error without a specified name" do
72
89
  subject.configuration.infer_names = false
73
90
  expect do
@@ -81,7 +98,24 @@ describe MagicLamp do
81
98
 
82
99
  it "uses ApplicationController as the default controller" do
83
100
  subject.register_fixture { render :index }
84
- expect(at_index.first).to eq(::ApplicationController)
101
+ expect(at_index[:controller]).to eq(::ApplicationController)
102
+ end
103
+
104
+ context "extend" do
105
+ it "defaults to an empty array" do
106
+ subject.register_fixture { render :index }
107
+ expect(at_index[:extend]).to eq([])
108
+ end
109
+
110
+ it "wraps a bare object in an array" do
111
+ subject.register_fixture(extend: "foo") { render :index }
112
+ expect(at_index[:extend]).to eq(["foo"])
113
+ end
114
+
115
+ it "does not double wrap an array" do
116
+ subject.register_fixture(extend: ["foo"]) { render :index }
117
+ expect(at_index[:extend]).to eq(["foo"])
118
+ end
85
119
  end
86
120
 
87
121
  context "fixture name" do
@@ -92,18 +126,31 @@ describe MagicLamp do
92
126
  end.to raise_error(MagicLamp::AlreadyRegisteredFixtureError, "a fixture called 'index' has already been registered")
93
127
  end
94
128
 
95
- context "ApplicationController" do
96
- it "uses the first argument to render when given 2" do
97
- render_block = proc { render :index, foo: :bar }
98
- subject.register_fixture(controller: ::ApplicationController, &render_block)
129
+ context "namespacing" do
130
+ it "removes 'application'" do
131
+ subject.register_fixture(namespace: "application/orders/application/foos") { render :foo }
132
+ expect(subject.registered_fixtures).to_not have_key("application/orders/application/foos/foo")
133
+ expect(subject.registered_fixtures).to have_key("orders/foos/foo")
134
+ end
99
135
 
100
- expect(at_index).to eq([::ApplicationController, render_block])
136
+ it "prevents double namespacing" do
137
+ subject.register_fixture(namespace: "orders/orders/foos/orders/orders/bars") { render :foo }
138
+ expect(subject.registered_fixtures).to_not have_key("orders/orders/foos/orders/orders/bars/foo")
139
+ expect(subject.registered_fixtures).to have_key("orders/foos/orders/bars/foo")
101
140
  end
141
+ end
102
142
 
103
- it "uses the only argument when it isn't a hash" do
104
- render_block = proc { render :index }
105
- subject.register_fixture(controller: ::ApplicationController, &render_block)
106
- expect(at_index).to eq([::ApplicationController, render_block])
143
+ context "with ApplicationController" do
144
+ let(:index) { "index" }
145
+
146
+ it "is the first argument to render when given 2" do
147
+ subject.register_fixture(controller: ::ApplicationController) { render :index, foo: :bar }
148
+ expect(subject.registered_fixtures).to have_key(index)
149
+ end
150
+
151
+ it "is the only argument when it isn't a hash" do
152
+ subject.register_fixture(controller: ::ApplicationController) { render :index }
153
+ expect(subject.registered_fixtures).to have_key(index)
107
154
  end
108
155
 
109
156
  it "passes its configuration object to the render catcher" do
@@ -111,39 +158,70 @@ describe MagicLamp do
111
158
  subject.register_fixture { render :foo }
112
159
  end
113
160
 
114
- context "1 hash argument" do
161
+ context "and 1 hash argument to render" do
115
162
  it "raises an error if it can't figure out a default name" do
116
163
  expect do
117
164
  subject.register_fixture(controller: ::ApplicationController) { render collection: [1, 2, 3] }
118
165
  end.to raise_error(MagicLamp::AmbiguousFixtureNameError, /Unable to infer fixture name/)
119
166
  end
120
167
 
121
- it "uses the name at the template key" do
122
- render_block = proc { render template: :index }
123
- subject.register_fixture(controller: ::ApplicationController, &render_block)
124
- expect(at_index).to eq([::ApplicationController, render_block])
168
+ it "is the name at the template key" do
169
+ subject.register_fixture(controller: ::ApplicationController) { render template: :index }
170
+ expect(subject.registered_fixtures).to have_key(index)
125
171
  end
126
172
 
127
- it "uses the name at the partial key" do
128
- render_block = proc { render partial: :index }
129
- subject.register_fixture(controller: ::ApplicationController, &render_block)
130
- expect(at_index).to eq([::ApplicationController, render_block])
173
+ it "is the name at the partial key" do
174
+ subject.register_fixture(controller: ::ApplicationController) { render partial: :partial }
175
+ expect(subject.registered_fixtures).to have_key("partial")
131
176
  end
132
177
  end
133
- end
134
178
 
135
- context "other controller" do
136
- it "prepends the controller's name to the fixture_name" do
137
- render_block = proc { render partial: :index }
138
- subject.register_fixture(controller: OrdersController, &render_block)
139
- expect(subject.registered_fixtures["orders/index"]).to eq([OrdersController, render_block])
179
+ context "namespacing" do
180
+ it "prepends the namespace to the front of the fixture name when inferred" do
181
+ subject.register_fixture(controller: ::ApplicationController, namespace: "foo") do
182
+ render :bar
183
+ end
184
+ expect(subject.registered_fixtures).to have_key("foo/bar")
185
+ end
186
+
187
+ it "prepends the namespace to the front of the fixture name when specified" do
188
+ subject.register_fixture(controller: ::ApplicationController, namespace: "foo", name: "baz") do
189
+ render :bar
190
+ end
191
+ expect(subject.registered_fixtures).to have_key("foo/baz")
192
+ end
140
193
  end
194
+ end
141
195
 
142
- it "does not prepend the controller's name when it is already the beginning of the string" do
143
- render_block = proc { render partial: "orders/order" }
144
- subject.register_fixture(controller: OrdersController, &render_block)
145
- expect(subject.registered_fixtures["orders/orders/order"]).to be_nil
146
- expect(subject.registered_fixtures["orders/order"]).to eq([OrdersController, render_block])
196
+ context "with another controller" do
197
+ context "namespacing" do
198
+ context "unspecified namespace" do
199
+ it "namespaces the fixture name with the controller's name" do
200
+ subject.register_fixture(controller: OrdersController) { render partial: :index }
201
+ expect(subject.registered_fixtures).to_not have_key("index")
202
+ expect(subject.registered_fixtures).to have_key("orders/index")
203
+ end
204
+
205
+ it "does not prepend the controller's name when it is already the beginning of the string" do
206
+ subject.register_fixture(controller: OrdersController) { render partial: "orders/order" }
207
+ expect(subject.registered_fixtures).to_not have_key("orders/orders/order")
208
+ expect(subject.registered_fixtures).to have_key("orders/order")
209
+ end
210
+ end
211
+
212
+ context "specified namespace" do
213
+ it "does not use the controller's name as a namespace" do
214
+ subject.register_fixture(controller: OrdersController, namespace: "foo") { render partial: :index }
215
+ expect(subject.registered_fixtures).to_not have_key("orders/index")
216
+ expect(subject.registered_fixtures).to have_key("foo/index")
217
+ end
218
+
219
+ it "does not prepend the namespace when the fixture name starts with the string" do
220
+ subject.register_fixture(controller: OrdersController, namespace: "foo") { render partial: "foo/order" }
221
+ expect(subject.registered_fixtures).to_not have_key("foo/foo/order")
222
+ expect(subject.registered_fixtures).to have_key("foo/order")
223
+ end
224
+ end
147
225
  end
148
226
  end
149
227
  end
@@ -159,14 +237,14 @@ describe MagicLamp do
159
237
  it "does not raise an error if there's no config" do
160
238
  allow(Dir).to receive(:[]).and_return([])
161
239
  expect(subject).to_not receive(:registered_fixtures)
162
- subject.load_config
240
+ expect { subject.load_config }.to_not raise_error
163
241
  end
164
242
  end
165
243
 
166
244
  describe "#load_lamp_files" do
167
245
  it "loads all lamp files" do
168
246
  subject.load_lamp_files
169
- expect(subject.registered_fixtures["orders/foo"]).to be_an(Array)
247
+ expect(subject.registered_fixtures["orders/foo"]).to be_a(Hash)
170
248
  end
171
249
 
172
250
  it "blows out registered_fixtures on each call" do
@@ -186,7 +264,6 @@ describe MagicLamp do
186
264
  end
187
265
 
188
266
  describe "#registered?" do
189
-
190
267
  it "returns true if the fixture is registered" do
191
268
  subject.registered_fixtures["foo"] = :something
192
269
  expect(subject.registered?("foo")).to eq(true)
@@ -199,13 +276,19 @@ describe MagicLamp do
199
276
 
200
277
  describe "#generate_fixture" do
201
278
  let(:block) { proc { render :foo } }
279
+ let(:fixture_name) { "foo_test" }
280
+ let(:extensions) { 3.times.map { Module.new } }
202
281
 
203
282
  before do
204
- subject.registered_fixtures["foo_test"] = [OrdersController, block]
283
+ subject.registered_fixtures[fixture_name] = {
284
+ controller: OrdersController,
285
+ render_block: block,
286
+ extend: extensions
287
+ }
205
288
  end
206
289
 
207
290
  it "returns the template" do
208
- expect(subject.generate_fixture("foo_test")).to eq("foo\n")
291
+ expect(subject.generate_fixture(fixture_name)).to eq("foo\n")
209
292
  end
210
293
 
211
294
  it "raises an error when told to generate a template that is not registered" do
@@ -214,11 +297,21 @@ describe MagicLamp do
214
297
  end.to raise_error(MagicLamp::UnregisteredFixtureError, /is not a registered fixture/)
215
298
  end
216
299
 
217
- it "passes its configuration object to the render catcher" do
218
- subject.registered_fixtures["foo"] = []
300
+ it "passes its configuration object to the fixture creator" do
219
301
  dummy = double(generate_template: :generate_template)
220
302
  expect(MagicLamp::FixtureCreator).to receive(:new).with(subject.configuration).and_return(dummy)
221
- subject.generate_fixture("foo")
303
+ subject.generate_fixture(fixture_name)
304
+ end
305
+
306
+ it "passes the controller, extensions, and block to the fixture creator's generate_template method" do
307
+ dummy = double
308
+ allow(MagicLamp::FixtureCreator).to receive(:new).and_return(dummy)
309
+ expect(dummy).to receive(:generate_template) do |controller, extend_args, &passed_block|
310
+ expect(controller).to eq(OrdersController)
311
+ expect(extend_args).to eq(extensions)
312
+ expect(passed_block).to eq(block)
313
+ end
314
+ subject.generate_fixture(fixture_name)
222
315
  end
223
316
  end
224
317
 
@@ -6,8 +6,7 @@ describe MagicLamp::RenderCatcher do
6
6
  it { is_expected.to be_kind_of(MagicLamp::Callbacks) }
7
7
 
8
8
  context "attr_accessor" do
9
- it { is_expected.to respond_to :render_argument }
10
- it { is_expected.to respond_to :render_argument= }
9
+ it { is_expected.to attr_accessorize :render_argument }
11
10
  end
12
11
 
13
12
  describe "#render" do
data/spec/spec_helper.rb CHANGED
@@ -14,7 +14,32 @@
14
14
  # users commonly want.
15
15
  #
16
16
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
17
+ require "fantaskspec"
18
+ MAIN_OBJECT = self
19
+
20
+ RSpec::Matchers.define :alias_the_method do |method_name|
21
+ match do |actual|
22
+ if actual.respond_to?(method_name) && actual.respond_to?(@other_method_name)
23
+ aliased_method = actual.method(@other_method_name)
24
+ original_method = actual.method(method_name)
25
+ aliased_method.original_name == original_method.name
26
+ end
27
+ end
28
+
29
+ chain :to do |other_method_name|
30
+ @other_method_name = other_method_name
31
+ end
32
+ end
33
+
34
+ RSpec::Matchers.define :attr_accessorize do |attribute_name|
35
+ match do |actual|
36
+ actual.respond_to?(attribute_name) && actual.respond_to?("#{attribute_name}=")
37
+ end
38
+ end
39
+
17
40
  RSpec.configure do |config|
41
+ config.infer_rake_task_specs_from_file_location!
42
+
18
43
  config.before(:each) do
19
44
  MagicLamp.registered_fixtures = {}
20
45
  MagicLamp.configuration = MagicLamp::Configuration.new
@@ -65,6 +90,7 @@ RSpec.configure do |config|
65
90
  # For more details, see:
66
91
  # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
67
92
  expectations.syntax = :expect
93
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
68
94
  end
69
95
 
70
96
  # rspec-mocks config goes here. You can use an alternate test double
@@ -1,23 +1,15 @@
1
1
  require "rails_helper"
2
2
 
3
- describe "Fixture names task" do
4
- let(:task) { Rake::Task["magic_lamp:fixture_names"] }
3
+ describe "magic_lamp:fixture_names" do
4
+ it { is_expected.to depend_on(:environment) }
5
5
 
6
6
  it "outputs a sorted list of all the fixture names" do
7
- dummy = Object.new
8
- task_proc = task.actions.first
9
-
10
- expect(dummy).to receive(:puts) do |output|
7
+ expect(MAIN_OBJECT).to receive(:puts) do |output|
11
8
  fixture_names = MagicLamp.registered_fixtures.keys.sort
12
9
  expect(output).to_not be_empty
13
10
  expect(output).to eq(fixture_names)
14
11
  end
15
12
 
16
- dummy.instance_eval(&task_proc)
17
- end
18
-
19
- it "depends on the environment task" do
20
- prereqs = task.all_prerequisite_tasks
21
- expect(prereqs).to include(Rake::Task["environment"])
13
+ subject.execute
22
14
  end
23
15
  end
@@ -1,17 +1,11 @@
1
1
  require "rails_helper"
2
2
 
3
- describe "Lint task" do
4
- let(:task) { Rake::Task["magic_lamp:lint"] }
3
+ describe "magic_lamp:lint" do
4
+ it { is_expected.to depend_on(:environment) }
5
5
 
6
6
  it "generates all fixtures" do
7
7
  expect(MagicLamp).to receive(:generate_all_fixtures)
8
- dummy = double(puts: nil)
9
- task_proc = task.actions.first
10
- dummy.instance_eval(&task_proc)
11
- end
12
-
13
- it "depends on the environment task" do
14
- prereqs = task.all_prerequisite_tasks
15
- expect(prereqs).to include(Rake::Task["environment"])
8
+ allow(MAIN_OBJECT).to receive(:puts).and_return(:puts)
9
+ subject.execute
16
10
  end
17
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magic_lamp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Crismali
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-19 00:00:00.000000000 Z
11
+ date: 2014-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.2'
19
+ version: '4.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '3.2'
26
+ version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: fantaskspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: pry
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +150,20 @@ dependencies:
136
150
  - - ">="
137
151
  - !ruby/object:Gem::Version
138
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: pry-doc
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
139
167
  - !ruby/object:Gem::Dependency
140
168
  name: bundler
141
169
  requirement: !ruby/object:Gem::Requirement
@@ -174,6 +202,7 @@ extra_rdoc_files: []
174
202
  files:
175
203
  - LICENSE
176
204
  - README.md
205
+ - VERSION
177
206
  - app/assets/javascripts/magic_lamp.js
178
207
  - app/assets/javascripts/magic_lamp/application.js
179
208
  - app/assets/javascripts/magic_lamp/boot.js
@@ -188,6 +217,8 @@ files:
188
217
  - lib/magic_lamp.rb
189
218
  - lib/magic_lamp/callbacks.rb
190
219
  - lib/magic_lamp/configuration.rb
220
+ - lib/magic_lamp/constants.rb
221
+ - lib/magic_lamp/defaults_manager.rb
191
222
  - lib/magic_lamp/engine.rb
192
223
  - lib/magic_lamp/fixture_creator.rb
193
224
  - lib/magic_lamp/render_catcher.rb
@@ -210,6 +241,7 @@ files:
210
241
  - spec/dummy/app/views/orders/edit.html.erb
211
242
  - spec/dummy/app/views/orders/foo.html.erb
212
243
  - spec/dummy/app/views/orders/index.html.erb
244
+ - spec/dummy/app/views/orders/needs_extending.html.erb
213
245
  - spec/dummy/app/views/orders/new.html.erb
214
246
  - spec/dummy/app/views/orders/show.html.erb
215
247
  - spec/dummy/bin/bundle
@@ -368,6 +400,7 @@ files:
368
400
  - spec/javascripts/support/underscore-1.6.js
369
401
  - spec/lib/callbacks_spec.rb
370
402
  - spec/lib/configuration_spec.rb
403
+ - spec/lib/defaults_manager_spec.rb
371
404
  - spec/lib/fixture_creator_spec.rb
372
405
  - spec/lib/magic_lamp_spec.rb
373
406
  - spec/lib/render_catcher_spec.rb
@@ -415,6 +448,7 @@ test_files:
415
448
  - spec/dummy/app/views/orders/edit.html.erb
416
449
  - spec/dummy/app/views/orders/foo.html.erb
417
450
  - spec/dummy/app/views/orders/index.html.erb
451
+ - spec/dummy/app/views/orders/needs_extending.html.erb
418
452
  - spec/dummy/app/views/orders/new.html.erb
419
453
  - spec/dummy/app/views/orders/show.html.erb
420
454
  - spec/dummy/bin/bundle
@@ -575,6 +609,7 @@ test_files:
575
609
  - spec/javascripts/support/underscore-1.6.js
576
610
  - spec/lib/callbacks_spec.rb
577
611
  - spec/lib/configuration_spec.rb
612
+ - spec/lib/defaults_manager_spec.rb
578
613
  - spec/lib/fixture_creator_spec.rb
579
614
  - spec/lib/magic_lamp_spec.rb
580
615
  - spec/lib/render_catcher_spec.rb
@@ -583,3 +618,4 @@ test_files:
583
618
  - spec/tasks/fixture_names_task_spec.rb
584
619
  - spec/tasks/lint_task_spec.rb
585
620
  - spec/teaspoon_env.rb
621
+ has_rdoc: