magic_lamp 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: