wagn 1.18.6 → 1.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Guardfile +2 -2
- data/bin/wagn +3 -3
- data/features/notifications.feature +1 -0
- data/features/rules.feature +2 -0
- data/features/step_definitions/email_steps.rb +10 -2
- data/features/step_definitions/history_steps.rb +1 -1
- data/features/step_definitions/wagn_steps.rb +72 -48
- data/features/step_definitions/web_steps.rb +12 -12
- data/features/step_definitions/window_steps.rb +3 -3
- data/features/structure.feature +1 -0
- data/features/support/delayed_job.rb +18 -0
- data/features/support/env.rb +43 -24
- data/features/support/paths.rb +4 -4
- data/features/support/scopes.rb +6 -6
- data/features/support/wagn_env.rb +2 -2
- data/features/table_of_contents.feature +1 -0
- data/features/update_includers.feature +2 -4
- data/lib/decko/engine.rb +29 -28
- data/lib/wagn.rb +1 -1
- data/lib/wagn/all.rb +1 -1
- data/lib/wagn/application.rb +9 -9
- data/lib/wagn/cli.rb +5 -5
- data/lib/wagn/commands.rb +48 -48
- data/lib/wagn/commands/application.rb +4 -4
- data/lib/wagn/config/environments/cucumber.rb +2 -0
- data/lib/wagn/config/environments/development.rb +2 -2
- data/lib/wagn/config/environments/production.rb +2 -2
- data/lib/wagn/config/environments/test.rb +12 -3
- data/lib/wagn/config/initializers/secret_token.rb +2 -2
- data/lib/wagn/generators/wagn/templates/Gemfile +38 -51
- data/lib/wagn/generators/wagn/templates/bin/spring +6 -6
- data/lib/wagn/generators/wagn/templates/config/application.rb +12 -1
- data/lib/wagn/generators/wagn/templates/spec/javascripts/support/deck_jasmine.yml +2 -2
- data/lib/wagn/generators/wagn/templates/spec/javascripts/support/wagn_jasmine.yml +15 -10
- data/lib/wagn/generators/wagn/templates/spec/spec_helper.rb +1 -1
- data/lib/wagn/generators/wagn/wagn_generator.rb +87 -87
- data/lib/wagn/generators/wagn/wagn_generator/interactive.rb +28 -28
- data/lib/wagn/mods_spec_helper.rb +9 -9
- data/lib/wagn/parser.rb +27 -27
- data/lib/wagn/response.rb +106 -0
- data/lib/wagn/script_wagn_loader.rb +4 -4
- data/lib/wagn/simplecov_helper.rb +19 -19
- data/lib/wagn/tasks/cucumber.rake +19 -19
- data/lib/wagn/tasks/db.rake +8 -8
- data/lib/wagn/tasks/test.rake +25 -25
- data/lib/wagn/tasks/wagn.rake +107 -110
- data/rails/application-routes.rb +2 -2
- data/rails/controllers/card_controller.rb +37 -196
- data/rails/engine-routes.rb +29 -29
- data/script/autospec +3 -3
- data/script/rails +3 -3
- data/script/test_filter +2 -2
- data/script/wagn +3 -3
- data/spec/controllers/card_controller_spec.rb +194 -170
- data/spec/controllers/location_spec.rb +10 -10
- data/spec/javascripts/support/jasmine.yml.erb +4 -4
- data/spec/javascripts/support/jasmine_config.rb +4 -4
- data/spec/javascripts/support/jasmine_runner.rb +5 -5
- data/test/performance/card_create_test.rb +5 -5
- data/test/performance/fetch_test.rb +3 -3
- data/test/performance/homepage_test.rb +3 -3
- data/test/performance/render_test.rb +3 -3
- data/test/test_helper.rb +14 -14
- data/wagn.gemspec +16 -16
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f5def697ca9071dc1eb8fbb857b6f3b9f7b9d62
|
4
|
+
data.tar.gz: 18c4adb2308e3b2793d98daaf210d02b746ac804
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18bed7fa63837c98a67740861e9d9461774faddc0052a1f915ea2438c7524ef9b607283ae86c002725b22151aa9a5167ba1b2b60f04c644bd5610e916624b38a
|
7
|
+
data.tar.gz: d8df098265a6e02e6e3e1b98afa07dfea4e32ee1ec9609a429bfceaa75ded1777c43e5af756817f03ac42b31247b6577534454bf939b6a45933bd74175c9e821
|
data/Guardfile
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
# More info at https://github.com/guard/guard#readme
|
3
3
|
|
4
4
|
# guard :rspec, cmd: 'bundle exec env COVERAGE=false rspec' do
|
5
|
-
guard :rspec, cmd:
|
5
|
+
guard :rspec, cmd: "bundle exec wagn rspec" do
|
6
6
|
watch(%r{^spec/.+_spec\.rb$})
|
7
7
|
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
8
|
-
watch(
|
8
|
+
watch("spec/spec_helper.rb") { "spec" }
|
9
9
|
|
10
10
|
# Rails example
|
11
11
|
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
data/bin/wagn
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
git_path = File.expand_path(
|
3
|
+
git_path = File.expand_path("../../../.git", __FILE__)
|
4
4
|
|
5
5
|
if File.exist?(git_path)
|
6
|
-
railties_path = File.expand_path(
|
6
|
+
railties_path = File.expand_path("../../lib", __FILE__)
|
7
7
|
$LOAD_PATH.unshift(railties_path)
|
8
8
|
end
|
9
|
-
require
|
9
|
+
require "wagn/cli"
|
data/features/rules.feature
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
@javascript
|
1
2
|
Feature: Set-based Rles
|
2
3
|
In order to control settings in an efficient way
|
3
4
|
As a Wagneer
|
@@ -6,6 +7,7 @@ Feature: Set-based Rles
|
|
6
7
|
Background:
|
7
8
|
Given I am signed in as Joe Admin
|
8
9
|
And I create card "*all+*help" with content "say something spicy"
|
10
|
+
And I wait a sec
|
9
11
|
|
10
12
|
Scenario: default setting and plus card override
|
11
13
|
Given I create Phrase card "color+*right+*add help" with content "If colorblind, leave blank"
|
@@ -31,7 +31,7 @@ module EmailHelpers
|
|
31
31
|
# Replace with your a way to find your current email. e.g session -> email
|
32
32
|
# last_email_address will return the last email address used by email spec to find an email.
|
33
33
|
# Note that last_email_address will be reset after each Scenario.
|
34
|
-
last_email_address ||
|
34
|
+
last_email_address || "fixthis@wagn.org"
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -189,6 +189,10 @@ Then /^save and open all raw emails$/ do
|
|
189
189
|
end
|
190
190
|
|
191
191
|
Then /^(.*) should be notified that "(.*)"$/ do |username, subject|
|
192
|
+
Timeout.timeout(Capybara.default_wait_time) do
|
193
|
+
sleep(0.5) while page.evaluate_script("jQuery.active") != 0
|
194
|
+
end
|
195
|
+
Delayed::Worker.new.work_off
|
192
196
|
email = address_for_user username
|
193
197
|
begin
|
194
198
|
step %("#{email}" should receive 1 email)
|
@@ -199,10 +203,14 @@ Then /^(.*) should be notified that "(.*)"$/ do |username, subject|
|
|
199
203
|
end
|
200
204
|
|
201
205
|
Then /^No notification should be sent$/ do
|
206
|
+
Timeout.timeout(Capybara.default_wait_time) do
|
207
|
+
sleep(0.5) while page.evaluate_script("jQuery.active") != 0
|
208
|
+
end
|
209
|
+
Delayed::Worker.new.work_off
|
202
210
|
expect(all_emails).to be_empty
|
203
211
|
end
|
204
212
|
|
205
213
|
def address_for_user username
|
206
|
-
card_with_acct = username ==
|
214
|
+
card_with_acct = username == "I" ? Auth.current : Card[username]
|
207
215
|
card_with_acct ? card_with_acct.account.email : username
|
208
216
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
# rubocop:disable Lint/AmbiguousRegexpLiteral
|
3
|
-
require
|
4
|
-
require
|
5
|
-
support_paths_file = File.join File.dirname(__FILE__),
|
3
|
+
require "uri"
|
4
|
+
require "cgi"
|
5
|
+
support_paths_file = File.join File.dirname(__FILE__), "..", "support", "paths"
|
6
6
|
require File.expand_path support_paths_file
|
7
7
|
|
8
8
|
if RUBY_VERSION =~ /^2/
|
9
|
-
require
|
9
|
+
require "byebug"
|
10
10
|
else
|
11
|
-
require
|
11
|
+
require "debugger"
|
12
12
|
end
|
13
13
|
|
14
14
|
Given /^site simulates setup need$/ do
|
@@ -17,19 +17,19 @@ end
|
|
17
17
|
|
18
18
|
Given /^site stops simulating setup need$/ do
|
19
19
|
Card::Auth.simulate_setup_need! false
|
20
|
-
step
|
20
|
+
step "I am signed out"
|
21
21
|
end
|
22
22
|
|
23
23
|
Given /^I am signed in as (.+)$/ do |account_name|
|
24
24
|
accounted = Card[account_name]
|
25
|
-
visit
|
25
|
+
visit "/update/:signin?card[subcards][%2B*email][content]="\
|
26
26
|
"#{accounted.account.email}&card[subcards][%2B*password][content]=joe_pass"
|
27
27
|
# could optimize by specifying simple text success page
|
28
28
|
end
|
29
29
|
|
30
30
|
Given /^I am signed out$/ do
|
31
|
-
visit
|
32
|
-
step 'I follow "Sign out"' if page.has_content?
|
31
|
+
visit "/"
|
32
|
+
step 'I follow "Sign out"' if page.has_content? "Sign out"
|
33
33
|
end
|
34
34
|
|
35
35
|
# Given /^I sign in as (.+)$/ do |account_name|
|
@@ -62,7 +62,7 @@ When wysiwyg_re do |username, cardname, content|
|
|
62
62
|
signed_in_as(username) do
|
63
63
|
visit "/card/edit/#{cardname.to_name.url_key}"
|
64
64
|
page.execute_script "$('#main .card-content').val('#{content}')"
|
65
|
-
click_button
|
65
|
+
click_button "Submit"
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
@@ -70,40 +70,55 @@ edit_re = /^(.*) edits? "([^\"]*)" setting (.*) to "([^\"]*)"$/
|
|
70
70
|
When edit_re do |username, cardname, _field, content|
|
71
71
|
signed_in_as(username) do
|
72
72
|
visit "/card/edit/#{cardname.to_name.url_key}"
|
73
|
-
|
74
|
-
click_button
|
73
|
+
set_content "card[content]", content
|
74
|
+
click_button "Submit"
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
78
|
filling_re = /^(.*) edits? "([^\"]*)" filling in "([^\"]*)"$/
|
79
79
|
When filling_re do |_username, cardname, content|
|
80
80
|
visit "/card/edit/#{cardname.to_name.url_key}"
|
81
|
-
fill_in
|
81
|
+
fill_in "card[content]", with: content
|
82
82
|
end
|
83
83
|
|
84
84
|
When /^(.*) edits? "([^\"]*)" with plusses:/ do |username, cardname, plusses|
|
85
85
|
signed_in_as(username) do
|
86
86
|
visit "/card/edit/#{cardname.to_name.url_key}"
|
87
87
|
plusses.hashes.first.each do |name, content|
|
88
|
-
|
88
|
+
set_content "card[subcards][#{cardname}+#{name}][content]", content
|
89
89
|
end
|
90
|
-
click_button
|
90
|
+
click_button "Submit"
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
+
def set_content name, content, cardtype=nil
|
95
|
+
Capybara.ignore_hidden_elements = false
|
96
|
+
ace_editors = all(".ace-editor-textarea[name='#{name}']")
|
97
|
+
pm_editors = all(".prosemirror-editor > [name='#{name}']")
|
98
|
+
if ace_editors.present? &&
|
99
|
+
page.evaluate_script("typeof ace != 'undefined'")
|
100
|
+
page.execute_script "ace.edit($('.ace_editor').get(0))"\
|
101
|
+
".getSession().setValue('#{content}')"
|
102
|
+
elsif pm_editors.present?
|
103
|
+
editor_id = pm_editors.first.first(:xpath, ".//..")[:id]
|
104
|
+
set_prosemirror_content editor_id, content
|
105
|
+
else
|
106
|
+
#rescue Selenium::WebDriver::Error::JavascriptError
|
107
|
+
fill_in(name, with: content)
|
108
|
+
end
|
109
|
+
Capybara.ignore_hidden_elements = true
|
110
|
+
end
|
111
|
+
|
112
|
+
def set_prosemirror_content editor_id, content
|
113
|
+
escaped_quotes = content.gsub("'", "\\'")
|
114
|
+
page.execute_script "getProseMirror('#{editor_id}')"\
|
115
|
+
".setContent('#{escaped_quotes}', 'text')"
|
116
|
+
end
|
117
|
+
|
94
118
|
content_re = /^(.*) creates?\s*a?\s*([^\s]*) card "(.*)" with content "(.*)"$/
|
95
119
|
When content_re do |username, cardtype, cardname, content|
|
96
120
|
create_card(username, cardtype, cardname, content) do
|
97
|
-
|
98
|
-
JavaScript CoffeeScript HTML CSS SCSS Search
|
99
|
-
)
|
100
|
-
if !normal_textarea_types.include?(cardtype) ||
|
101
|
-
!page.evaluate_script("typeof ace != 'undefined'")
|
102
|
-
fill_in('card[content]', with: content)
|
103
|
-
else
|
104
|
-
page.execute_script "ace.edit($('.ace_editor').get(0))"\
|
105
|
-
".getSession().setValue('#{content}')"
|
106
|
-
end
|
121
|
+
set_content "card[content]", content, cardtype
|
107
122
|
end
|
108
123
|
end
|
109
124
|
|
@@ -116,7 +131,7 @@ plus_re = /^(.*) creates?\s*([^\s]*) card "([^"]*)" with plusses:$/
|
|
116
131
|
When plus_re do |username, cardtype, cardname, plusses|
|
117
132
|
create_card(username, cardtype, cardname) do
|
118
133
|
plusses.hashes.first.each do |name, content|
|
119
|
-
|
134
|
+
set_content "card[subcards][+#{name}][content]", content, cardtype
|
120
135
|
end
|
121
136
|
end
|
122
137
|
end
|
@@ -135,19 +150,20 @@ end
|
|
135
150
|
When /^(?:|I )upload the (.+) "(.+)"$/ do |attachment_name, filename|
|
136
151
|
script = "$('input[type=file]').css('opacity','1');"
|
137
152
|
page.driver.browser.execute_script(script)
|
138
|
-
file = File.join Wagn.gem_root,
|
153
|
+
file = File.join Wagn.gem_root, "features", "support", filename
|
139
154
|
attach_file "card_#{attachment_name}", file
|
140
155
|
end
|
141
156
|
|
142
157
|
Given /^(.*) (is|am) watching "([^\"]+)"$/ do |user, _verb, cardname|
|
143
|
-
|
158
|
+
Delayed::Worker.new.work_off
|
159
|
+
user = Card::Auth.current.name if user == "I"
|
144
160
|
signed_in_as user do
|
145
161
|
step "the card #{cardname}+#{user}+*follow contains \"[[*always]]\""
|
146
162
|
end
|
147
163
|
end
|
148
164
|
|
149
165
|
Given /^(.*) (is|am) not watching "([^\"]+)"$/ do |user, _verb, cardname|
|
150
|
-
user = Card::Auth.current.name if user ==
|
166
|
+
user = Card::Auth.current.name if user == "I"
|
151
167
|
signed_in_as user do
|
152
168
|
step "the card #{cardname}+#{user}+*follow contains \"[[*never]]\""
|
153
169
|
end
|
@@ -163,7 +179,7 @@ end
|
|
163
179
|
|
164
180
|
When /^I wait until ajax response done$/ do
|
165
181
|
Timeout.timeout(Capybara.default_wait_time) do
|
166
|
-
sleep(0.5) while page.evaluate_script(
|
182
|
+
sleep(0.5) while page.evaluate_script("jQuery.active") != 0
|
167
183
|
end
|
168
184
|
end
|
169
185
|
|
@@ -181,20 +197,20 @@ end
|
|
181
197
|
# nil
|
182
198
|
# end
|
183
199
|
|
184
|
-
def create_card username, cardtype, cardname, content=
|
200
|
+
def create_card username, cardtype, cardname, content=""
|
185
201
|
signed_in_as(username) do
|
186
|
-
if cardtype ==
|
202
|
+
if cardtype == "Pointer"
|
187
203
|
Card.create name: cardname, type: cardtype, content: content
|
188
204
|
else
|
189
205
|
visit "/card/new?card[name]=#{CGI.escape(cardname)}&type=#{cardtype}"
|
190
206
|
yield if block_given?
|
191
|
-
click_button
|
207
|
+
click_button "Submit"
|
192
208
|
end
|
193
209
|
end
|
194
210
|
end
|
195
211
|
|
196
212
|
def signed_in_as username
|
197
|
-
sameuser = (username ==
|
213
|
+
sameuser = (username == "I")
|
198
214
|
sameuser ||= (Card::Auth.current.key == username.to_name.key)
|
199
215
|
was_signed_in = Card::Auth.current_id if Card::Auth.signed_in?
|
200
216
|
step "I am signed in as #{username}" unless sameuser
|
@@ -245,18 +261,22 @@ When /^In (.*) I find button with icon "(.*)" and click it$/ do |section, icon|
|
|
245
261
|
end
|
246
262
|
end
|
247
263
|
|
264
|
+
Given /^Jobs are dispatched$/ do
|
265
|
+
Delayed::Worker.new.work_off
|
266
|
+
end
|
267
|
+
|
248
268
|
Then /I submit$/ do
|
249
|
-
click_button
|
269
|
+
click_button "Submit"
|
250
270
|
end
|
251
271
|
|
252
272
|
When /^I open the main card menu$/ do
|
253
273
|
slot = "$('#main .menu-slot .vertical-card-menu.show-on-hover .card-slot')"
|
254
274
|
page.execute_script "#{slot}.show()"
|
255
|
-
page.find(
|
275
|
+
page.find("#main .menu-slot .card-menu a").click
|
256
276
|
end
|
257
277
|
|
258
278
|
When /^I close the modal window$/ do
|
259
|
-
page.find(
|
279
|
+
page.find(".modal-menu .close-modal").click
|
260
280
|
end
|
261
281
|
|
262
282
|
# When /^I pick (.*)$/ do |menu_item|
|
@@ -264,36 +284,36 @@ end
|
|
264
284
|
|
265
285
|
Then /the card (.*) should contain "([^\"]*)"$/ do |cardname, content|
|
266
286
|
visit path_to("card #{cardname}")
|
267
|
-
within scope_of(
|
287
|
+
within scope_of("main card content") do
|
268
288
|
expect(page).to have_content(content)
|
269
289
|
end
|
270
290
|
end
|
271
291
|
|
272
292
|
Then /the card (.*) should not contain "([^\"]*)"$/ do |cardname, content|
|
273
293
|
visit path_to("card #{cardname}")
|
274
|
-
within scope_of(
|
294
|
+
within scope_of("main card content") do
|
275
295
|
expect(page).not_to have_content(content)
|
276
296
|
end
|
277
297
|
end
|
278
298
|
|
279
299
|
Then /the card (.*) should point to "([^\"]*)"$/ do |cardname, content|
|
280
300
|
visit path_to("card #{cardname}")
|
281
|
-
within scope_of(
|
301
|
+
within scope_of("pointer card content") do
|
282
302
|
expect(page).to have_content(content)
|
283
303
|
end
|
284
304
|
end
|
285
305
|
|
286
306
|
Then /the card (.*) should not point to "([^\"]*)"$/ do |cardname, content|
|
287
307
|
visit path_to("card #{cardname}")
|
288
|
-
within scope_of(
|
308
|
+
within scope_of("pointer card content") do
|
289
309
|
expect(page).not_to have_content(content)
|
290
310
|
end
|
291
311
|
end
|
292
312
|
|
293
313
|
Then /^In (.*) I should see "([^\"]*)"$/ do |section, text|
|
294
314
|
within scope_of(section) do
|
295
|
-
if text.index(
|
296
|
-
expect(text.split(
|
315
|
+
if text.index("|")
|
316
|
+
expect(text.split("|").any? { |t| have_content(t) }).to be
|
297
317
|
else
|
298
318
|
expect(page).to have_content(text)
|
299
319
|
end
|
@@ -309,17 +329,17 @@ end
|
|
309
329
|
class_re = /^In (.*) I should (not )?see a ([^\"]*) with class "([^\"]*)"$/
|
310
330
|
Then class_re do |selection, neg, element, selector|
|
311
331
|
# checks for existence of a element with a class in a selection context
|
312
|
-
element =
|
332
|
+
element = "a" if element == "link"
|
313
333
|
within scope_of(selection) do
|
314
334
|
verb = neg ? :should_not : :should
|
315
|
-
page.send(verb, have_css([element, selector].join(
|
335
|
+
page.send(verb, have_css([element, selector].join(".")))
|
316
336
|
end
|
317
337
|
end
|
318
338
|
|
319
339
|
content_re = /^In (.*) I should (not )?see a ([^\"]*) with content "([^\"]*)"$/
|
320
340
|
Then content_re do |selection, neg, element, content|
|
321
341
|
# checks for existence of a element with a class in a selection context
|
322
|
-
element =
|
342
|
+
element = "a" if element == "link"
|
323
343
|
within scope_of(selection) do
|
324
344
|
verb = neg ? :should_not : :should
|
325
345
|
page.send(verb, have_css(element, text: content))
|
@@ -337,11 +357,11 @@ Then /^"([^"]*)" should be selected for "([^"]*)"$/ do |value, field|
|
|
337
357
|
end
|
338
358
|
|
339
359
|
Then /^"([^"]*)" should be signed in$/ do |user| # "
|
340
|
-
has_css?(
|
360
|
+
has_css?("#my-card-link", text: user)
|
341
361
|
end
|
342
362
|
|
343
363
|
When /^I press enter to search$/ do
|
344
|
-
find(
|
364
|
+
find("#_keyword").native.send_keys(:return)
|
345
365
|
end
|
346
366
|
|
347
367
|
## variants of standard steps to handle """ style quoted args
|
@@ -374,6 +394,10 @@ Then /^I should see "([^\"]*)" in color (.*)$/ do |text, css_class|
|
|
374
394
|
page.has_css?(".diff-#{css_class}", text: text)
|
375
395
|
end
|
376
396
|
|
397
|
+
Then /^I should see css class "([^\"]*)"$/ do |css_class|
|
398
|
+
find(css_class)
|
399
|
+
end
|
400
|
+
|
377
401
|
css_should = /^I should see css class "([^\"]*)" within "(.*)"$/
|
378
402
|
Then css_should do |css_class, selector|
|
379
403
|
within selector do
|
@@ -6,9 +6,9 @@
|
|
6
6
|
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
|
7
7
|
# files.
|
8
8
|
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require File.expand_path(File.join(File.dirname(__FILE__),
|
9
|
+
require "uri"
|
10
|
+
require "cgi"
|
11
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
|
12
12
|
|
13
13
|
# Commonly used webrat steps
|
14
14
|
# http://github.com/brynary/webrat
|
@@ -108,17 +108,17 @@ end
|
|
108
108
|
# passed to attach_file() you will get a "Photo file is not one of the allowed file types."
|
109
109
|
# error message
|
110
110
|
When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
|
111
|
-
type = path.split(
|
111
|
+
type = path.split(".")[1]
|
112
112
|
|
113
113
|
case type
|
114
|
-
when
|
115
|
-
type =
|
116
|
-
when
|
117
|
-
type =
|
118
|
-
when
|
119
|
-
type =
|
120
|
-
when
|
121
|
-
type =
|
114
|
+
when "jpg"
|
115
|
+
type = "image/jpg"
|
116
|
+
when "jpeg"
|
117
|
+
type = "image/jpeg"
|
118
|
+
when "png"
|
119
|
+
type = "image/png"
|
120
|
+
when "gif"
|
121
|
+
type = "image/gif"
|
122
122
|
end
|
123
123
|
|
124
124
|
attach_file(field, path, type)
|
@@ -13,14 +13,14 @@ END_TAG
|
|
13
13
|
end
|
14
14
|
|
15
15
|
When /I switch to (.+) window$/ do |window|
|
16
|
-
if window ==
|
16
|
+
if window == "first"
|
17
17
|
page.driver.browser.switch_to.window(page.driver.browser.window_handles.first)
|
18
|
-
elsif window ==
|
18
|
+
elsif window == "last"
|
19
19
|
page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
When /^I close window$/ do
|
24
|
-
page.execute_script(
|
24
|
+
page.execute_script("window.close();")
|
25
25
|
page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
|
26
26
|
end
|