mediawiki_selenium 1.0.0.pre.2 → 1.0.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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +23 -1
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +1 -4
  6. data/UPGRADE.md +1 -1
  7. data/bin/mediawiki-selenium-init +1 -1
  8. data/lib/mediawiki_selenium/browser_factory/base.rb +8 -8
  9. data/lib/mediawiki_selenium/browser_factory/chrome.rb +1 -1
  10. data/lib/mediawiki_selenium/browser_factory/firefox.rb +4 -4
  11. data/lib/mediawiki_selenium/browser_factory/phantomjs.rb +2 -2
  12. data/lib/mediawiki_selenium/browser_factory.rb +5 -5
  13. data/lib/mediawiki_selenium/environment.rb +15 -14
  14. data/lib/mediawiki_selenium/initializer.rb +4 -4
  15. data/lib/mediawiki_selenium/page_factory.rb +1 -1
  16. data/lib/mediawiki_selenium/remote_browser_factory.rb +12 -8
  17. data/lib/mediawiki_selenium/step_definitions/login_steps.rb +0 -11
  18. data/lib/mediawiki_selenium/step_definitions/navigation_steps.rb +0 -11
  19. data/lib/mediawiki_selenium/step_definitions/preferences_steps.rb +0 -11
  20. data/lib/mediawiki_selenium/step_definitions/resource_loader_steps.rb +0 -11
  21. data/lib/mediawiki_selenium/step_definitions/upload_file_steps.rb +3 -3
  22. data/lib/mediawiki_selenium/step_definitions.rb +5 -5
  23. data/lib/mediawiki_selenium/support/env.rb +5 -16
  24. data/lib/mediawiki_selenium/support/hooks.rb +15 -26
  25. data/lib/mediawiki_selenium/support/modules/api_helper.rb +5 -7
  26. data/lib/mediawiki_selenium/support/pages/api_page.rb +6 -6
  27. data/lib/mediawiki_selenium/support/pages/login_page.rb +13 -12
  28. data/lib/mediawiki_selenium/support/pages/random_page.rb +2 -2
  29. data/lib/mediawiki_selenium/support/pages/reset_preferences_page.rb +3 -3
  30. data/lib/mediawiki_selenium/support/pages.rb +4 -4
  31. data/lib/mediawiki_selenium/support/sauce.rb +14 -18
  32. data/lib/mediawiki_selenium/support.rb +4 -4
  33. data/lib/mediawiki_selenium/version.rb +1 -12
  34. data/lib/mediawiki_selenium/warnings_formatter.rb +15 -15
  35. data/lib/mediawiki_selenium.rb +8 -19
  36. data/mediawiki_selenium.gemspec +35 -28
  37. data/spec/api_helper_spec.rb +25 -25
  38. data/spec/browser_factory/base_spec.rb +50 -46
  39. data/spec/browser_factory/chrome_spec.rb +11 -11
  40. data/spec/browser_factory/firefox_spec.rb +17 -17
  41. data/spec/browser_factory/phantomjs_spec.rb +11 -11
  42. data/spec/environment_spec.rb +194 -159
  43. data/spec/page_factory_spec.rb +12 -12
  44. data/spec/remote_browser_factory_spec.rb +15 -15
  45. data/spec/spec_helper.rb +2 -2
  46. data/templates/tests/browser/features/support/env.rb +3 -3
  47. metadata +9 -9
  48. data/.rubocop_todo.yml +0 -160
@@ -1,4 +1,4 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  module MediawikiSelenium
4
4
  describe Environment do
@@ -13,101 +13,101 @@ module MediawikiSelenium
13
13
  mediawiki_api_url: mediawiki_api_url,
14
14
  mediawiki_url: mediawiki_url,
15
15
  mediawiki_user: mediawiki_user,
16
- mediawiki_password: mediawiki_password,
16
+ mediawiki_password: mediawiki_password
17
17
  }
18
18
  end
19
19
 
20
- let(:browser) { "firefox" }
21
- let(:mediawiki_api_url) { "http://an.example/wiki/api.php" }
22
- let(:mediawiki_url) { "http://an.example/wiki/" }
23
- let(:mediawiki_user) { "mw user" }
24
- let(:mediawiki_password) { "mw password" }
20
+ let(:browser) { 'firefox' }
21
+ let(:mediawiki_api_url) { 'http://an.example/wiki/api.php' }
22
+ let(:mediawiki_url) { 'http://an.example/wiki/' }
23
+ let(:mediawiki_user) { 'mw user' }
24
+ let(:mediawiki_password) { 'mw password' }
25
25
 
26
- describe ".load" do
26
+ describe '.load' do
27
27
  subject { Environment.load(name, extra) }
28
28
 
29
- let(:name) { "foo" }
29
+ let(:name) { 'foo' }
30
30
  let(:extra) { {} }
31
31
 
32
32
  before do
33
- expect(YAML).to receive(:load_file).with("environments.yml").
34
- and_return("foo" => { "x" => "a", "y" => "b" })
33
+ expect(YAML).to receive(:load_file).with('environments.yml').
34
+ and_return('foo' => { 'x' => 'a', 'y' => 'b' })
35
35
  end
36
36
 
37
- it "returns a new environment" do
37
+ it 'returns a new environment' do
38
38
  expect(subject).to be_a(Environment)
39
39
  end
40
40
 
41
- it "uses the given configuration in `environments.yml`" do
42
- expect(subject[:x]).to eq("a")
43
- expect(subject[:y]).to eq("b")
41
+ it 'uses the given configuration in `environments.yml`' do
42
+ expect(subject[:x]).to eq('a')
43
+ expect(subject[:y]).to eq('b')
44
44
  end
45
45
 
46
- context "when the given environment does not exist in `environments.yml`" do
47
- let(:name) { "bar" }
46
+ context 'when the given environment does not exist in `environments.yml`' do
47
+ let(:name) { 'bar' }
48
48
 
49
- it "raises a ConfigurationError" do
50
- expect { subject }.to raise_error(ConfigurationError, "unknown environment `bar`")
49
+ it 'raises a ConfigurationError' do
50
+ expect { subject }.to raise_error(ConfigurationError, 'unknown environment `bar`')
51
51
  end
52
52
  end
53
53
 
54
- context "when extra configuration is given" do
55
- let(:extra) { { x: "c" } }
54
+ context 'when extra configuration is given' do
55
+ let(:extra) { { x: 'c' } }
56
56
 
57
- it "overwrites the loaded configuration" do
58
- expect(subject[:x]).to eq("c")
59
- expect(subject[:y]).to eq("b")
57
+ it 'overwrites the loaded configuration' do
58
+ expect(subject[:x]).to eq('c')
59
+ expect(subject[:y]).to eq('b')
60
60
  end
61
61
  end
62
62
  end
63
63
 
64
- describe ".load_default" do
64
+ describe '.load_default' do
65
65
  subject { Environment.load_default }
66
66
 
67
- it "loads the environment configuration specified by MEDIAWIKI_ENVIRONMENT" do
68
- expect(ENV).to receive(:[]).with("MEDIAWIKI_ENVIRONMENT").and_return("foo")
69
- expect(Environment).to receive(:load).with("foo", ENV)
67
+ it 'loads the environment configuration specified by MEDIAWIKI_ENVIRONMENT' do
68
+ expect(ENV).to receive(:[]).with('MEDIAWIKI_ENVIRONMENT').and_return('foo')
69
+ expect(Environment).to receive(:load).with('foo', ENV)
70
70
  subject
71
71
  end
72
72
  end
73
73
 
74
- describe "#==" do
74
+ describe '#==' do
75
75
  subject { env == other }
76
76
 
77
- context "given an environment with the same configuration" do
77
+ context 'given an environment with the same configuration' do
78
78
  let(:other) { Environment.new(config) }
79
79
 
80
- it "considers them equal" do
80
+ it 'considers them equal' do
81
81
  expect(subject).to be(true)
82
82
  end
83
83
  end
84
84
 
85
- context "given an environment with different configuration" do
86
- let(:other) { Environment.new(config.merge(some: "extra")) }
85
+ context 'given an environment with different configuration' do
86
+ let(:other) { Environment.new(config.merge(some: 'extra')) }
87
87
 
88
- it "considers them not equal" do
88
+ it 'considers them not equal' do
89
89
  expect(subject).to be(false)
90
90
  end
91
91
  end
92
92
  end
93
93
 
94
- describe "#as_user" do
95
- context "when both an alternative user and password are defined" do
94
+ describe '#as_user' do
95
+ context 'when both an alternative user and password are defined' do
96
96
  let(:config) do
97
97
  {
98
- mediawiki_user: "user",
99
- mediawiki_password: "pass",
100
- mediawiki_user_b: "user b",
101
- mediawiki_password_b: "pass b",
98
+ mediawiki_user: 'user',
99
+ mediawiki_password: 'pass',
100
+ mediawiki_user_b: 'user b',
101
+ mediawiki_password_b: 'pass b'
102
102
  }
103
103
  end
104
104
 
105
- it "yields the alternative user and password in the new environment" do
106
- expect { |block| env.as_user(:b, &block) }.to yield_with_args("user b", "pass b")
105
+ it 'yields the alternative user and password in the new environment' do
106
+ expect { |block| env.as_user(:b, &block) }.to yield_with_args('user b', 'pass b')
107
107
 
108
108
  env.as_user(:b) do
109
- expect(env[:mediawiki_user]).to eq("user b")
110
- expect(env[:mediawiki_password]).to eq("pass b")
109
+ expect(env[:mediawiki_user]).to eq('user b')
110
+ expect(env[:mediawiki_password]).to eq('pass b')
111
111
  end
112
112
  end
113
113
  end
@@ -115,90 +115,90 @@ module MediawikiSelenium
115
115
  context "when an alternative for the password isn't defined" do
116
116
  let(:config) do
117
117
  {
118
- mediawiki_user: "user",
119
- mediawiki_password: "pass",
120
- mediawiki_user_b: "user b",
118
+ mediawiki_user: 'user',
119
+ mediawiki_password: 'pass',
120
+ mediawiki_user_b: 'user b'
121
121
  }
122
122
  end
123
123
 
124
- it "falls back to using the base defined password" do
125
- expect { |block| env.as_user(:b, &block) }.to yield_with_args("user b", "pass")
124
+ it 'falls back to using the base defined password' do
125
+ expect { |block| env.as_user(:b, &block) }.to yield_with_args('user b', 'pass')
126
126
 
127
127
  env.as_user(:b) do
128
- expect(env[:mediawiki_user]).to eq("user b")
129
- expect(env[:mediawiki_password]).to eq("pass")
128
+ expect(env[:mediawiki_user]).to eq('user b')
129
+ expect(env[:mediawiki_password]).to eq('pass')
130
130
  end
131
131
  end
132
132
  end
133
133
  end
134
134
 
135
- describe "#browser_factory" do
135
+ describe '#browser_factory' do
136
136
  subject { env.browser_factory }
137
137
 
138
- it "is a factory for the configured browser" do
138
+ it 'is a factory for the configured browser' do
139
139
  expect(subject).to be_a(BrowserFactory::Firefox)
140
140
  end
141
141
 
142
- context "given an explicit type of browser" do
142
+ context 'given an explicit type of browser' do
143
143
  subject { env.browser_factory(:chrome) }
144
144
 
145
- it "is a factory for that type" do
145
+ it 'is a factory for that type' do
146
146
  expect(subject).to be_a(BrowserFactory::Chrome)
147
147
  end
148
148
  end
149
149
 
150
- context "caching in a cloned environment" do
150
+ context 'caching in a cloned environment' do
151
151
  let(:env1) { env }
152
152
  let(:env2) { env1.clone }
153
153
 
154
154
  let(:factory1) { env.browser_factory(browser1) }
155
155
  let(:factory2) { env2.browser_factory(browser2) }
156
156
 
157
- context "with the same local/remote behavior as before" do
157
+ context 'with the same local/remote behavior as before' do
158
158
  before do
159
159
  expect(env1).to receive(:remote?).at_least(:once).and_return(false)
160
160
  expect(env2).to receive(:remote?).at_least(:once).and_return(false)
161
161
  end
162
162
 
163
- context "and the same type of browser as before" do
163
+ context 'and the same type of browser as before' do
164
164
  let(:browser1) { :firefox }
165
165
  let(:browser2) { :firefox }
166
166
 
167
- it "returns a cached factory" do
167
+ it 'returns a cached factory' do
168
168
  expect(factory1).to be(factory2)
169
169
  end
170
170
  end
171
171
 
172
- context "and a different type of browser than before" do
172
+ context 'and a different type of browser than before' do
173
173
  let(:browser1) { :firefox }
174
174
  let(:browser2) { :chrome }
175
175
 
176
- it "returns a new factory" do
176
+ it 'returns a new factory' do
177
177
  expect(factory1).not_to be(factory2)
178
178
  end
179
179
  end
180
180
  end
181
181
 
182
- context "with different local/remote behavior as before" do
182
+ context 'with different local/remote behavior as before' do
183
183
  before do
184
184
  expect(env1).to receive(:remote?).at_least(:once).and_return(false)
185
185
  expect(env2).to receive(:remote?).at_least(:once).and_return(true)
186
186
  end
187
187
 
188
- context "but the same type of browser as before" do
188
+ context 'but the same type of browser as before' do
189
189
  let(:browser1) { :firefox }
190
190
  let(:browser2) { :firefox }
191
191
 
192
- it "returns a cached factory" do
192
+ it 'returns a cached factory' do
193
193
  expect(factory1).not_to be(factory2)
194
194
  end
195
195
  end
196
196
 
197
- context "and a different type of browser than before" do
197
+ context 'and a different type of browser than before' do
198
198
  let(:browser1) { :firefox }
199
199
  let(:browser2) { :chrome }
200
200
 
201
- it "returns a new factory" do
201
+ it 'returns a new factory' do
202
202
  expect(factory1).not_to be(factory2)
203
203
  end
204
204
  end
@@ -206,32 +206,32 @@ module MediawikiSelenium
206
206
  end
207
207
  end
208
208
 
209
- describe "#browser_name" do
209
+ describe '#browser_name' do
210
210
  subject { env.browser_name }
211
211
 
212
- let(:browser) { "Chrome" }
212
+ let(:browser) { 'Chrome' }
213
213
 
214
- it "is always a lowercase symbol" do
214
+ it 'is always a lowercase symbol' do
215
215
  expect(subject).to be(:chrome)
216
216
  end
217
217
 
218
- context "missing browser configuration" do
218
+ context 'missing browser configuration' do
219
219
  let(:browser) { nil }
220
220
 
221
- it "defaults to :firefox" do
221
+ it 'defaults to :firefox' do
222
222
  expect(subject).to be(:firefox)
223
223
  end
224
224
  end
225
225
  end
226
226
 
227
- describe "#env" do
227
+ describe '#env' do
228
228
  subject { env.env }
229
229
 
230
230
  it { is_expected.to be(env) }
231
231
  end
232
232
 
233
- describe "#in_browser" do
234
- it "executes in the new environment with a new browser session" do
233
+ describe '#in_browser' do
234
+ it 'executes in the new environment with a new browser session' do
235
235
  expect { |block| env.in_browser(:a, &block) }.to yield_with_args(:a)
236
236
 
237
237
  env.in_browser(:a) do
@@ -239,45 +239,45 @@ module MediawikiSelenium
239
239
  end
240
240
  end
241
241
 
242
- context "given browser configuration overrides" do
243
- it "executes in the new environment with the prefixed overrides" do
244
- expect { |block| env.in_browser(:a, language: "eo", &block) }.
245
- to yield_with_args("eo", :a)
242
+ context 'given browser configuration overrides' do
243
+ it 'executes in the new environment with the prefixed overrides' do
244
+ expect { |block| env.in_browser(:a, language: 'eo', &block) }.
245
+ to yield_with_args('eo', :a)
246
246
 
247
- env.in_browser(:a, language: "eo") do
248
- expect(env[:browser_language]).to eq("eo")
247
+ env.in_browser(:a, language: 'eo') do
248
+ expect(env[:browser_language]).to eq('eo')
249
249
  expect(env[:_browser_session]).to eq(:a)
250
250
  end
251
251
  end
252
252
  end
253
253
  end
254
254
 
255
- describe "#lookup" do
255
+ describe '#lookup' do
256
256
  subject { env.lookup(key, options) }
257
257
 
258
- let(:config) { { foo: "foo_value", foo_b: "foo_b_value", bar: "bar_value" } }
258
+ let(:config) { { foo: 'foo_value', foo_b: 'foo_b_value', bar: 'bar_value' } }
259
259
 
260
- context "for a key that exists" do
260
+ context 'for a key that exists' do
261
261
  let(:key) { :foo }
262
262
  let(:options) { {} }
263
263
 
264
- it "returns the configuration" do
265
- expect(subject).to eq("foo_value")
264
+ it 'returns the configuration' do
265
+ expect(subject).to eq('foo_value')
266
266
  end
267
267
  end
268
268
 
269
269
  context "for a key that doesn't exist" do
270
270
  let(:key) { :baz }
271
271
 
272
- context "given no default value" do
272
+ context 'given no default value' do
273
273
  let(:options) { {} }
274
274
 
275
- it "raises a ConfigurationError" do
275
+ it 'raises a ConfigurationError' do
276
276
  expect { subject }.to raise_error(ConfigurationError)
277
277
  end
278
278
  end
279
279
 
280
- context "given a default value" do
280
+ context 'given a default value' do
281
281
  let(:options) { { default: default } }
282
282
  let(:default) { double(Object) }
283
283
 
@@ -285,27 +285,27 @@ module MediawikiSelenium
285
285
  end
286
286
  end
287
287
 
288
- context "for an alternative that exists" do
288
+ context 'for an alternative that exists' do
289
289
  let(:key) { :foo }
290
290
  let(:options) { { id: :b } }
291
291
 
292
- it "returns the configured alternative" do
293
- expect(subject).to eq("foo_b_value")
292
+ it 'returns the configured alternative' do
293
+ expect(subject).to eq('foo_b_value')
294
294
  end
295
295
  end
296
296
 
297
297
  context "for an alternative that doesn't exist" do
298
298
  let(:key) { :foo }
299
299
 
300
- context "given no default value" do
300
+ context 'given no default value' do
301
301
  let(:options) { { id: :c } }
302
302
 
303
- it "raises a ConfigurationError" do
303
+ it 'raises a ConfigurationError' do
304
304
  expect { subject }.to raise_error(ConfigurationError)
305
305
  end
306
306
  end
307
307
 
308
- context "given a default value" do
308
+ context 'given a default value' do
309
309
  let(:options) { { id: :c, default: default } }
310
310
  let(:default) { double(Object) }
311
311
 
@@ -314,158 +314,193 @@ module MediawikiSelenium
314
314
  end
315
315
  end
316
316
 
317
- describe "#on_wiki" do
317
+ describe '#on_wiki' do
318
318
  let(:config) do
319
319
  {
320
- mediawiki_url: "http://an.example/wiki",
321
- mediawiki_url_b: "http://altb.example/wiki",
322
- mediawiki_url_c: "http://altc.example/wiki",
320
+ mediawiki_url: 'http://an.example/wiki',
321
+ mediawiki_url_b: 'http://altb.example/wiki',
322
+ mediawiki_url_c: 'http://altc.example/wiki'
323
323
  }
324
324
  end
325
325
 
326
- it "executes in the new environment using the alternative wiki URL" do
327
- expect { |block| env.on_wiki(:b, &block) }.to yield_with_args("http://altb.example/wiki")
326
+ it 'executes in the new environment using the alternative wiki URL' do
327
+ expect { |block| env.on_wiki(:b, &block) }.to yield_with_args('http://altb.example/wiki')
328
328
 
329
329
  env.on_wiki(:b) do
330
- expect(env[:mediawiki_url]).to eq("http://altb.example/wiki")
330
+ expect(env[:mediawiki_url]).to eq('http://altb.example/wiki')
331
331
  end
332
332
  end
333
333
  end
334
334
 
335
- describe "#user" do
335
+ describe '#teardown' do
336
+ subject { env.teardown(status) }
337
+
338
+ let(:status) { :passed }
339
+ let(:browser_instance) { double(Watir::Browser) }
340
+
341
+ before do
342
+ expect(env.browser_factory).to receive(:each) { |&blk| [browser_instance].each(&blk) }
343
+ expect(env.browser_factory).to receive(:teardown).with(env, status)
344
+ end
345
+
346
+ it 'yields the given block and closes the browser' do
347
+ expect(browser_instance).to receive(:close)
348
+ expect { |blk| env.teardown(status, &blk) }.to yield_with_args(browser_instance)
349
+ end
350
+
351
+ context 'when keep_browser_open is set to "true"' do
352
+ let(:config) { { keep_browser_open: 'true' } }
353
+
354
+ it 'does not close the browser' do
355
+ expect(browser_instance).not_to receive(:close)
356
+ subject
357
+ end
358
+
359
+ context 'but browser is "phantomjs"' do
360
+ let(:config) { { browser: 'phantomjs', keep_browser_open: 'true' } }
361
+
362
+ it 'closes the browser anyway' do
363
+ expect(browser_instance).to receive(:close)
364
+ subject
365
+ end
366
+ end
367
+ end
368
+ end
369
+
370
+ describe '#user' do
336
371
  subject { env.user(id) }
337
372
 
338
- let(:config) { { mediawiki_user: "mw_user", mediawiki_user_b: "mw_user_b" } }
373
+ let(:config) { { mediawiki_user: 'mw_user', mediawiki_user_b: 'mw_user_b' } }
339
374
 
340
- context "given no alternative ID" do
375
+ context 'given no alternative ID' do
341
376
  let(:id) { nil }
342
377
 
343
- it "returns the configured :mediawiki_user" do
344
- expect(subject).to eq("mw_user")
378
+ it 'returns the configured :mediawiki_user' do
379
+ expect(subject).to eq('mw_user')
345
380
  end
346
381
  end
347
382
 
348
- context "given an alternative ID" do
383
+ context 'given an alternative ID' do
349
384
  let(:id) { :b }
350
385
 
351
- it "returns the configured alternative :mediawiki_user" do
352
- expect(subject).to eq("mw_user_b")
386
+ it 'returns the configured alternative :mediawiki_user' do
387
+ expect(subject).to eq('mw_user_b')
353
388
  end
354
389
  end
355
390
  end
356
391
 
357
- describe "#user_label" do
392
+ describe '#user_label' do
358
393
  subject { env.user_label(id) }
359
394
 
360
- let(:config) { { mediawiki_user: "mw_user", mediawiki_user_b: "mw_user_b" } }
395
+ let(:config) { { mediawiki_user: 'mw_user', mediawiki_user_b: 'mw_user_b' } }
361
396
 
362
- context "given no alternative ID" do
397
+ context 'given no alternative ID' do
363
398
  let(:id) { nil }
364
399
 
365
- it "returns the configured :mediawiki_user with underscores replaced" do
366
- expect(subject).to eq("mw user")
400
+ it 'returns the configured :mediawiki_user with underscores replaced' do
401
+ expect(subject).to eq('mw user')
367
402
  end
368
403
  end
369
404
 
370
- context "given an alternative ID" do
405
+ context 'given an alternative ID' do
371
406
  let(:id) { :b }
372
407
 
373
- it "returns the configured alternative :mediawiki_user with underscores replaced" do
374
- expect(subject).to eq("mw user b")
408
+ it 'returns the configured alternative :mediawiki_user with underscores replaced' do
409
+ expect(subject).to eq('mw user b')
375
410
  end
376
411
  end
377
412
  end
378
413
 
379
- describe "#wiki_url" do
414
+ describe '#wiki_url' do
380
415
  subject { env.wiki_url(url) }
381
416
 
382
- let(:env) { Environment.new(mediawiki_url: "http://an.example/wiki/") }
417
+ let(:env) { Environment.new(mediawiki_url: 'http://an.example/wiki/') }
383
418
 
384
- context "with no given url" do
419
+ context 'with no given url' do
385
420
  let(:url) { nil }
386
421
 
387
- it "is the configured :mediawiki_url" do
388
- expect(subject).to eq("http://an.example/wiki/")
422
+ it 'is the configured :mediawiki_url' do
423
+ expect(subject).to eq('http://an.example/wiki/')
389
424
  end
390
425
  end
391
426
 
392
- context "when the given URL is a relative path" do
393
- let(:url) { "some/path" }
427
+ context 'when the given URL is a relative path' do
428
+ let(:url) { 'some/path' }
394
429
 
395
- it "is the configured :mediawiki_url with the path appended" do
396
- expect(subject).to eq("http://an.example/wiki/some/path")
430
+ it 'is the configured :mediawiki_url with the path appended' do
431
+ expect(subject).to eq('http://an.example/wiki/some/path')
397
432
  end
398
433
  end
399
434
 
400
- context "when the given URL is an absolute path" do
401
- let(:url) { "/some/path" }
435
+ context 'when the given URL is an absolute path' do
436
+ let(:url) { '/some/path' }
402
437
 
403
- it "is the configured :mediawiki_url with the path replaced" do
404
- expect(subject).to eq("http://an.example/some/path")
438
+ it 'is the configured :mediawiki_url with the path replaced' do
439
+ expect(subject).to eq('http://an.example/some/path')
405
440
  end
406
441
  end
407
442
 
408
- context "when the given URL is an absolute URL" do
409
- let(:url) { "http://another.example" }
443
+ context 'when the given URL is an absolute URL' do
444
+ let(:url) { 'http://another.example' }
410
445
 
411
- it "is given absolute URL" do
412
- expect(subject).to eq("http://another.example")
446
+ it 'is given absolute URL' do
447
+ expect(subject).to eq('http://another.example')
413
448
  end
414
449
  end
415
450
 
416
- context "when the given URL is a relative path with a namespace" do
417
- let(:url) { "some:path" }
451
+ context 'when the given URL is a relative path with a namespace' do
452
+ let(:url) { 'some:path' }
418
453
 
419
- it "is the configured :mediawiki_url with the path replaced" do
420
- expect(subject).to eq("http://an.example/wiki/some:path")
454
+ it 'is the configured :mediawiki_url with the path replaced' do
455
+ expect(subject).to eq('http://an.example/wiki/some:path')
421
456
  end
422
457
  end
423
458
 
424
459
  end
425
460
 
426
- describe "#with_alternative" do
461
+ describe '#with_alternative' do
427
462
  let(:config) do
428
463
  {
429
- mediawiki_url: "http://a.example/wiki",
430
- mediawiki_url_b: "http://b.example/wiki",
431
- mediawiki_api_url: "http://a.example/api",
432
- mediawiki_api_url_b: "http://b.example/api",
464
+ mediawiki_url: 'http://a.example/wiki',
465
+ mediawiki_url_b: 'http://b.example/wiki',
466
+ mediawiki_api_url: 'http://a.example/api',
467
+ mediawiki_api_url_b: 'http://b.example/api'
433
468
  }
434
469
  end
435
470
 
436
- context "given one option name and an ID" do
437
- it "executes in the new environment that substitutes it using the alternative" do
471
+ context 'given one option name and an ID' do
472
+ it 'executes in the new environment that substitutes it using the alternative' do
438
473
  expect { |block| env.with_alternative(:mediawiki_url, :b, &block) }.
439
- to yield_with_args("http://b.example/wiki")
474
+ to yield_with_args('http://b.example/wiki')
440
475
 
441
476
  env.with_alternative(:mediawiki_url, :b) do
442
- expect(env[:mediawiki_url]).to eq("http://b.example/wiki")
477
+ expect(env[:mediawiki_url]).to eq('http://b.example/wiki')
443
478
  end
444
479
  end
445
480
  end
446
481
 
447
- context "given multiple option names and an ID" do
448
- it "executes in the new environment that substitutes both using the alternatives" do
482
+ context 'given multiple option names and an ID' do
483
+ it 'executes in the new environment that substitutes both using the alternatives' do
449
484
  expect { |block| env.with_alternative([:mediawiki_url, :mediawiki_api_url], :b, &block) }.
450
- to yield_with_args("http://b.example/wiki", "http://b.example/api")
485
+ to yield_with_args('http://b.example/wiki', 'http://b.example/api')
451
486
 
452
487
  env.with_alternative([:mediawiki_url, :mediawiki_api_url], :b) do
453
- expect(env[:mediawiki_url]).to eq("http://b.example/wiki")
454
- expect(env[:mediawiki_api_url]).to eq("http://b.example/api")
488
+ expect(env[:mediawiki_url]).to eq('http://b.example/wiki')
489
+ expect(env[:mediawiki_api_url]).to eq('http://b.example/api')
455
490
  end
456
491
  end
457
492
  end
458
493
 
459
- context "following block evaluation" do
460
- it "restores the original configuration" do
494
+ context 'following block evaluation' do
495
+ it 'restores the original configuration' do
461
496
  env.with_alternative(:mediawiki_url, :b)
462
- expect(env[:mediawiki_url]).to eq("http://a.example/wiki")
497
+ expect(env[:mediawiki_url]).to eq('http://a.example/wiki')
463
498
  end
464
499
 
465
- context "when an exception is raised within the block" do
466
- it "restores the original configuration and lets the exception be raised" do
467
- expect { env.with_alternative(:mediawiki_url, :b) { raise "error" } }.to raise_error
468
- expect(env[:mediawiki_url]).to eq("http://a.example/wiki")
500
+ context 'when an exception is raised within the block' do
501
+ it 'restores the original configuration and lets the exception be raised' do
502
+ expect { env.with_alternative(:mediawiki_url, :b) { raise 'error' } }.to raise_error
503
+ expect(env[:mediawiki_url]).to eq('http://a.example/wiki')
469
504
  end
470
505
  end
471
506
  end