wagn 1.18.6 → 1.19.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.
- 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
|