smalruby-editor 0.3.0 → 0.3.1
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.
Potentially problematic release.
This version of smalruby-editor might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/assets/javascripts/smalruby.js.coffee.erb +11 -6
- data/app/controllers/application_controller.rb +2 -1
- data/app/controllers/source_codes_controller.rb +5 -1
- data/app/helpers/users_helper.rb +12 -2
- data/app/models/preference.rb +7 -1
- data/app/models/source_code.rb +4 -4
- data/app/views/users/preferences.html.haml +2 -8
- data/config/locales/ja.yml +1 -0
- data/lib/smalruby_editor.rb +15 -7
- data/lib/smalruby_editor/version.rb +1 -1
- data/public/assets/{application-5253d287046c0356ed5bdf79ed312e9d.js → application-277da50b978f4a4292b83a0f2ff521e6.js} +5 -5
- data/public/assets/{application-5253d287046c0356ed5bdf79ed312e9d.js.gz → application-277da50b978f4a4292b83a0f2ff521e6.js.gz} +0 -0
- data/public/assets/{manifest-005ad49acadb6769ff8289e7543e777d.json → manifest-c9964fd12336c02e9a368ae822cc6cbe.json} +1 -1
- data/smalruby-editor.gemspec +1 -1
- data/spec/acceptance/standalone/preference.feature +31 -0
- data/spec/steps/text_editor_steps.rb +7 -0
- data/spec/steps/then_steps.rb +138 -0
- data/spec/steps/{base_steps.rb → when_steps.rb} +23 -152
- metadata +10 -8
@@ -26,39 +26,11 @@ step ':name 画面を表示する' do |name|
|
|
26
26
|
send ':name にアクセスする', name
|
27
27
|
end
|
28
28
|
|
29
|
-
step ':name
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
step ':name が表示されていないこと' do |name|
|
34
|
-
expect(page).not_to have_selector(name_to(name))
|
35
|
-
end
|
36
|
-
|
37
|
-
step ':parent に :name が表示されていること' do |parent, name|
|
38
|
-
within(name_to(parent)) do
|
39
|
-
expect(page.all(name_to(name), visible: true)).not_to be_empty
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
step ':parent に :name が表示されていないこと' do |parent, name|
|
44
|
-
within(name_to(parent)) do
|
45
|
-
expect(page.all(name_to(name), visible: true)).to be_empty
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
step 'コンボボックス :name の :option_label を選択していること' do
|
50
|
-
|name, option_label|
|
51
|
-
expect(find(%{select[name="#{name}"] option[selected]}).text)
|
52
|
-
.to eq(option_label)
|
53
|
-
end
|
54
|
-
|
55
|
-
step 'コンボボックス :name の :option_label を選択していないこと' do
|
56
|
-
|name, option_label|
|
57
|
-
expect(find(%{select[name="#{name}"] option[selected]}).text)
|
58
|
-
.not_to eq(option_label)
|
29
|
+
step ':name に :value を指定する' do |name, value|
|
30
|
+
send(':name フィールドに :value を指定する', name, value)
|
59
31
|
end
|
60
32
|
|
61
|
-
step ':name
|
33
|
+
step ':name フィールドに :value を指定する' do |name, value|
|
62
34
|
fill_in(name_to(name, :id), with: value)
|
63
35
|
end
|
64
36
|
|
@@ -70,14 +42,6 @@ step ':name のチェックを外す' do |name|
|
|
70
42
|
uncheck(name)
|
71
43
|
end
|
72
44
|
|
73
|
-
step ':name がチェックされていること' do |name|
|
74
|
-
expect(find(%{input[type="checkbox"][name="#{name}"]})).to be_checked
|
75
|
-
end
|
76
|
-
|
77
|
-
step ':name がチェックされていないこと' do |name|
|
78
|
-
expect(find(%{input[type="checkbox"][name="#{name}"]})).not_to be_checked
|
79
|
-
end
|
80
|
-
|
81
45
|
step ':name にタブを切り替える' do |name|
|
82
46
|
page.execute_script(<<-JS)
|
83
47
|
$('#tabs a[href=\"#{name_to(name)}\"]').click()
|
@@ -118,40 +82,12 @@ step 'ダウンロードが完了するまで待つ' do
|
|
118
82
|
end
|
119
83
|
end
|
120
84
|
|
121
|
-
step ':filename をダウンロードすること' do |filename|
|
122
|
-
step 'ダウンロードが完了するまで待つ'
|
123
|
-
if poltergeist?
|
124
|
-
expect(page.response_headers['Content-Disposition'])
|
125
|
-
.to match(/\Aattachment; filename="#{filename}"\z/)
|
126
|
-
expect(page.response_headers['Content-Type'])
|
127
|
-
.to eq('text/plain; charset=utf-8')
|
128
|
-
elsif selenium?
|
129
|
-
expect(downloads_dir.join(filename)).to be_exist
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
step 'ダウンロードしないこと' do
|
134
|
-
if poltergeist?
|
135
|
-
expect(page.response_headers['Content-Disposition']).to be_nil
|
136
|
-
elsif selenium?
|
137
|
-
expect(downloads_dir).not_to be_exist
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
85
|
step ':name にフォーカスを移す' do |name|
|
142
86
|
page.execute_script(<<-JS)
|
143
87
|
$('#{name_to(name)}').focus()
|
144
88
|
JS
|
145
89
|
end
|
146
90
|
|
147
|
-
step ':name にフォーカスがあること' do |name|
|
148
|
-
# HACK: 現在のPhantomJSでは$(':focus')は動作しない
|
149
|
-
# https://github.com/netzpirat/guard-jasmine/issues/48
|
150
|
-
expect(page.evaluate_script(<<-JS)).to be_true
|
151
|
-
$('#{name_to(name)}').get(0) == document.activeElement
|
152
|
-
JS
|
153
|
-
end
|
154
|
-
|
155
91
|
step ':filename をロードする' do |filename|
|
156
92
|
step '"ロードボタン" にフォーカスを移す'
|
157
93
|
|
@@ -164,6 +100,26 @@ step ':filename をロードする' do |filename|
|
|
164
100
|
attach_file('load-file', path)
|
165
101
|
end
|
166
102
|
|
103
|
+
step 'ページをリロードする' do
|
104
|
+
begin
|
105
|
+
if poltergeist?
|
106
|
+
# HACK: Poltergeistではwindow.onbeforeunload によって表示されたダ
|
107
|
+
# イアログを消せないためタイムアウト時間を1秒にすることで回避し
|
108
|
+
# ている。
|
109
|
+
page.driver.timeout = 2
|
110
|
+
begin
|
111
|
+
step '"エディタ" 画面を表示する'
|
112
|
+
ensure
|
113
|
+
page.driver.timeout = 120
|
114
|
+
end
|
115
|
+
else
|
116
|
+
step '"エディタ" 画面を表示する'
|
117
|
+
end
|
118
|
+
rescue Capybara::Poltergeist::TimeoutError => e
|
119
|
+
Rails.logger.debug("#{e.class.name}: #{e.message}")
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
167
123
|
step 'JavaScriptによるリクエストが終わるまで待つ' do
|
168
124
|
start_time = Time.now
|
169
125
|
until page.evaluate_script('jQuery.isReady && jQuery.active == 0') ||
|
@@ -185,40 +141,6 @@ step 'JavaScriptによる処理が終わるまで待つ' do
|
|
185
141
|
step 'JavaScriptによるアニメーションが終わるまで待つ'
|
186
142
|
end
|
187
143
|
|
188
|
-
step ':name は :value であること' do |name, value|
|
189
|
-
expect(page.evaluate_script(<<-JS)).to eq(value)
|
190
|
-
$('#{name_to(name)}').val()
|
191
|
-
JS
|
192
|
-
end
|
193
|
-
|
194
|
-
step ':name に :message を含むこと' do |name, message|
|
195
|
-
expect(page.find(name_to(name))).to have_content(message)
|
196
|
-
end
|
197
|
-
|
198
|
-
step ':name に :message を含まないこと' do |name, message|
|
199
|
-
expect(page.find(name_to(name))).not_to have_content(message)
|
200
|
-
end
|
201
|
-
|
202
|
-
step 'ページをリロードする' do
|
203
|
-
begin
|
204
|
-
if poltergeist?
|
205
|
-
# HACK: Poltergeistではwindow.onbeforeunload によって表示されたダ
|
206
|
-
# イアログを消せないためタイムアウト時間を1秒にすることで回避し
|
207
|
-
# ている。
|
208
|
-
page.driver.timeout = 2
|
209
|
-
begin
|
210
|
-
step '"エディタ" 画面を表示する'
|
211
|
-
ensure
|
212
|
-
page.driver.timeout = 120
|
213
|
-
end
|
214
|
-
else
|
215
|
-
step '"エディタ" 画面を表示する'
|
216
|
-
end
|
217
|
-
rescue Capybara::Poltergeist::TimeoutError => e
|
218
|
-
Rails.logger.debug("#{e.class.name}: #{e.message}")
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
222
144
|
step '警告ダイアログの :name ボタンをクリックする' do |name|
|
223
145
|
case name
|
224
146
|
when 'dismiss'
|
@@ -232,30 +154,6 @@ step '確認ダイアログをキャンセルするようにしておく' do
|
|
232
154
|
page.execute_script('window.confirmResult = false') if poltergeist?
|
233
155
|
end
|
234
156
|
|
235
|
-
step '確認メッセージ :message を表示すること' do |message|
|
236
|
-
message.gsub!('\n', "\n")
|
237
|
-
if poltergeist?
|
238
|
-
actual = page.evaluate_script('window.confirmMsg')
|
239
|
-
page.execute_script('window.confirmMsg = null')
|
240
|
-
expect(actual).to eq(message)
|
241
|
-
elsif selenium?
|
242
|
-
expect(page.driver.browser.switch_to.alert.text).to eq(message)
|
243
|
-
page.driver.browser.switch_to.alert.dismiss
|
244
|
-
end
|
245
|
-
end
|
246
|
-
|
247
|
-
step '確認メッセージを表示しないこと' do
|
248
|
-
if poltergeist?
|
249
|
-
actual = page.evaluate_script('window.confirmMsg')
|
250
|
-
page.execute_script('window.confirmMsg = null')
|
251
|
-
expect(actual).to be_nil
|
252
|
-
elsif selenium?
|
253
|
-
expect {
|
254
|
-
page.driver.browser.switch_to.alert
|
255
|
-
}.to raise_exception(Selenium::WebDriver::Error::NoAlertPresentError)
|
256
|
-
end
|
257
|
-
end
|
258
|
-
|
259
157
|
step '実際にはファイルをロードしないようにしておく' do
|
260
158
|
if selenium?
|
261
159
|
page.execute_script("$('#load-button').off('click')")
|
@@ -287,21 +185,6 @@ step 'ホームディレクトリに :program という内容の :filename が
|
|
287
185
|
end
|
288
186
|
end
|
289
187
|
|
290
|
-
step 'ホームディレクトリに :filename が存在すること' do |filename|
|
291
|
-
path = Pathname("~/#{filename}").expand_path
|
292
|
-
expect(path).to be_exist
|
293
|
-
end
|
294
|
-
|
295
|
-
step 'ホームディレクトリの :filename の内容が :program であること' do |filename, program|
|
296
|
-
path = Pathname("~/#{filename}").expand_path
|
297
|
-
expect(path.read).to eq(program)
|
298
|
-
end
|
299
|
-
|
300
|
-
step 'ホームディレクトリの :filename が次の内容であること:' do |filename, program|
|
301
|
-
path = Pathname("~/#{filename}").expand_path
|
302
|
-
expect(path.read).to eq(program)
|
303
|
-
end
|
304
|
-
|
305
188
|
step ':directory ディレクトリに :program という内容の :filename が存在する' do
|
306
189
|
|directory, program, filename|
|
307
190
|
File.open(Pathname("#{directory}/#{filename}").expand_path, 'w') do |f|
|
@@ -309,18 +192,6 @@ step ':directory ディレクトリに :program という内容の :filename が
|
|
309
192
|
end
|
310
193
|
end
|
311
194
|
|
312
|
-
step ':directory ディレクトリに :filename が存在すること' do
|
313
|
-
|directory, filename|
|
314
|
-
path = Pathname("#{directory}/#{filename}").expand_path
|
315
|
-
expect(path).to be_exist
|
316
|
-
end
|
317
|
-
|
318
|
-
step ':directory ディレクトリの :filename の内容が :program であること' do
|
319
|
-
|directory, filename, program|
|
320
|
-
path = Pathname("#{directory}/#{filename}").expand_path
|
321
|
-
expect(path.read).to eq(program)
|
322
|
-
end
|
323
|
-
|
324
195
|
step 'ページを表示する' do
|
325
196
|
# no-op
|
326
197
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smalruby-editor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouji Takao
|
@@ -198,14 +198,14 @@ dependencies:
|
|
198
198
|
requirements:
|
199
199
|
- - "~>"
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version: 0.1.
|
201
|
+
version: 0.1.8
|
202
202
|
type: :runtime
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
206
|
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version: 0.1.
|
208
|
+
version: 0.1.8
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
210
|
name: therubyracer
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
@@ -483,8 +483,8 @@ files:
|
|
483
483
|
- public/422.html
|
484
484
|
- public/500.html
|
485
485
|
- public/apple-touch-icon.png
|
486
|
-
- public/assets/application-
|
487
|
-
- public/assets/application-
|
486
|
+
- public/assets/application-277da50b978f4a4292b83a0f2ff521e6.js
|
487
|
+
- public/assets/application-277da50b978f4a4292b83a0f2ff521e6.js.gz
|
488
488
|
- public/assets/application-f879948b97a781e3d996535a2a0585fa.css
|
489
489
|
- public/assets/application-f879948b97a781e3d996535a2a0585fa.css.gz
|
490
490
|
- public/assets/blockly/msg/js/en_us-d5e1938b2d57c1df954f4411b9165d10.js
|
@@ -507,7 +507,7 @@ files:
|
|
507
507
|
- public/assets/jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png
|
508
508
|
- public/assets/jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png
|
509
509
|
- public/assets/loading-e77296be32d066d3e29d3bf9803fa417.gif
|
510
|
-
- public/assets/manifest-
|
510
|
+
- public/assets/manifest-c9964fd12336c02e9a368ae822cc6cbe.json
|
511
511
|
- public/assets/msg/en_us-a98cc83805d44f5f675fe6eac2c955ec.js
|
512
512
|
- public/assets/msg/en_us-a98cc83805d44f5f675fe6eac2c955ec.js.gz
|
513
513
|
- public/assets/msg/ja-243b0a55ef1086ef2180af94c422cb5e.js
|
@@ -693,12 +693,13 @@ files:
|
|
693
693
|
- spec/models/concerns/ruby_to_block_spec.rb
|
694
694
|
- spec/models/source_code_spec.rb
|
695
695
|
- spec/spec_helper.rb
|
696
|
-
- spec/steps/base_steps.rb
|
697
696
|
- spec/steps/block_mode_steps.rb
|
698
697
|
- spec/steps/fix_turnip.rb
|
699
698
|
- spec/steps/global_variable.rb
|
700
699
|
- spec/steps/standalone_steps.rb
|
701
700
|
- spec/steps/text_editor_steps.rb
|
701
|
+
- spec/steps/then_steps.rb
|
702
|
+
- spec/steps/when_steps.rb
|
702
703
|
- spec/support/capybara.rb
|
703
704
|
- spec/support/env.rb
|
704
705
|
- spec/support/feature_helper.rb
|
@@ -871,12 +872,13 @@ test_files:
|
|
871
872
|
- spec/models/concerns/ruby_to_block_spec.rb
|
872
873
|
- spec/models/source_code_spec.rb
|
873
874
|
- spec/spec_helper.rb
|
874
|
-
- spec/steps/base_steps.rb
|
875
875
|
- spec/steps/block_mode_steps.rb
|
876
876
|
- spec/steps/fix_turnip.rb
|
877
877
|
- spec/steps/global_variable.rb
|
878
878
|
- spec/steps/standalone_steps.rb
|
879
879
|
- spec/steps/text_editor_steps.rb
|
880
|
+
- spec/steps/then_steps.rb
|
881
|
+
- spec/steps/when_steps.rb
|
880
882
|
- spec/support/capybara.rb
|
881
883
|
- spec/support/env.rb
|
882
884
|
- spec/support/feature_helper.rb
|