smalruby-editor 0.3.0-x86-mingw32 → 0.3.1-x86-mingw32

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b3d49b266764299b645fbd09f0379907ed22f6a
4
- data.tar.gz: 30a4d87cb3c4b3a43f3d85db04c6b38b0583ede9
3
+ metadata.gz: 44c1af21464e2386c904952a79eb44e577d39159
4
+ data.tar.gz: 9e3ce5840d75650e4b0fa2563846c33b7419cb6e
5
5
  SHA512:
6
- metadata.gz: c5f5cd552ad4390276e127144706e60710794f82bff77a5a84645f3a03bb3e047f6c1d5964a14978fc23a40bb4bcb70a3d89e56d7a7ed9eb33460edd76a7e401
7
- data.tar.gz: 82cf267ea245c7f6543c64ce4f87b0c322b3f928e975192cb09c9608f955ee1034e0765fe3221da200d9b0db573b2fdd0340c3b9757d65dde0fe3abf5ac98af4
6
+ metadata.gz: a21ec1768b17b6b4a14842be4af5de28c900ec4103328bc5e5deb80b427275ff874265be94fc84b457cf1212a52f8d7503a96419c7d9a8dca7b98f3c2ce21bfe
7
+ data.tar.gz: 4d9ca92f49b939704d4310b1105a44a0aa46edf00258f4a67d913857dc5753ee5c6bb506d8daeb1ae8ae3e9fbd6ba10b1b11da16d60eeef1e87988ff6e892064
@@ -121,6 +121,8 @@ window.Smalruby =
121
121
  session.setTabSize(2)
122
122
  session.setUseSoftTabs(true)
123
123
 
124
+ @applyPreferences()
125
+
124
126
  @addCharacterFromBeginning()
125
127
 
126
128
  loadXml: (data, workspace = Blockly.mainWorkspace) ->
@@ -188,10 +190,10 @@ window.Smalruby =
188
190
 
189
191
  addCharacterFromBeginning: ->
190
192
  if !@isEnabled('disabled_add_character_from_beginning')
191
- constume = 'cat1.png'
193
+ costume = 'cat1.png'
192
194
  c = new Smalruby.Character
193
- name: @Collections.CharacterSet.uniqueName(constume)
194
- costumes: [constume]
195
+ name: @Collections.CharacterSet.uniqueName(costume)
196
+ costumes: [costume]
195
197
  x: 200
196
198
  y: 200
197
199
  @Collections.CharacterSet.add(c)
@@ -199,13 +201,16 @@ window.Smalruby =
199
201
  @Views.CharacterSelectorView.addBlock_(c)
200
202
  window.changed = false
201
203
 
202
- setPreferences: (preferences) ->
203
- @Preferences = preferences
204
+ applyPreferences: ->
204
205
  window.textEditor.setReadOnly(@isEnabled('enabled_readonly_ruby_mode'))
205
206
  if @isEnabled('disabled_new_character')
206
207
  $('#add-character-item').hide()
207
208
  else
208
209
  $('#add-character-item').show()
210
+
211
+ setPreferences: (preferences) ->
212
+ @Preferences = preferences
213
+ @applyPreferences()
209
214
  @changedAfterTranslating = true
210
215
  @reloadToolbox()
211
216
 
@@ -227,7 +232,7 @@ window.Smalruby =
227
232
  error: dfr.reject
228
233
  dfr.promise()
229
234
  .then (data) =>
230
- Blockly.updateToolbox(data)
235
+ Blockly.getMainWorkspace().updateToolbox(data)
231
236
  @hideEmptyCategory()
232
237
  .then(unblock, unblock)
233
238
  .fail =>
@@ -24,8 +24,9 @@ class ApplicationController < ActionController::Base
24
24
 
25
25
  # ロケールの設定
26
26
  def set_locale
27
- I18n.locale = params[:locale] ||
27
+ I18n.locale = params[:locale] || session[:locale] ||
28
28
  extract_locale_from_accept_language_header || I18n.default_locale
29
+ session[:locale] = I18n.locale
29
30
  Rails.application.routes.default_url_options[:locale] = I18n.locale
30
31
  end
31
32
 
@@ -99,7 +99,11 @@ class SourceCodesController < ApplicationController
99
99
  s = "~/#{source_code.filename}"
100
100
  end
101
101
  path = Pathname(s).expand_path
102
- render json: source_code.run(path)
102
+ env = {}
103
+ if current_preferences["hardware_port"].present?
104
+ env["SMALRUBOT_DEVICE"] = current_preferences["hardware_port"]
105
+ end
106
+ render json: source_code.run(path, env)
103
107
  end
104
108
 
105
109
  def to_blocks
@@ -1,10 +1,20 @@
1
1
  module UsersHelper
2
2
  def preferences_field(form, name)
3
+ html = ""
3
4
  case name
4
5
  when Preference::BOOLEAN_FIELD_REGEXP
5
- form.check_box(name)
6
+ html += content_tag(:div, class: "controls") do
7
+ form.label(name, class: "checkbox") do
8
+ form.check_box(name) +
9
+ t(name, scope: "helpers.label.user[preferences]")
10
+ end
11
+ end
6
12
  else
7
- form.text_field(name)
13
+ html += form.label(name, class: "control-label")
14
+ html += content_tag(:div, class: "controls") do
15
+ form.text_field(name)
16
+ end
8
17
  end
18
+ raw(html)
9
19
  end
10
20
  end
@@ -24,6 +24,7 @@ class Preference < Settingslogic
24
24
  disabled_add_character_from_beginning
25
25
  disabled_new_character
26
26
  enabled_readonly_ruby_mode
27
+ hardware_port
27
28
  )
28
29
  end
29
30
 
@@ -41,7 +42,12 @@ class Preference < Settingslogic
41
42
  def self.defaults
42
43
  (toolbox_preference_names +
43
44
  general_preference_names).map { |n|
44
- [n, false]
45
+ case n
46
+ when BOOLEAN_FIELD_REGEXP
47
+ [n, false]
48
+ else
49
+ [n, ""]
50
+ end
45
51
  }.to_h.merge("toolbox_name" => "default")
46
52
  end
47
53
 
@@ -53,8 +53,8 @@ class SourceCode < ActiveRecord::Base
53
53
  end
54
54
 
55
55
  # プログラムを実行する
56
- def run(path)
57
- _, stderr_str, status = *open3_capture3_run_program(path)
56
+ def run(path, env = {})
57
+ _, stderr_str, status = *open3_capture3_run_program(path, env)
58
58
  return [] if status.success?
59
59
 
60
60
  parse_ruby_error_messages(stderr_str)
@@ -146,9 +146,9 @@ class SourceCode < ActiveRecord::Base
146
146
  end
147
147
  end
148
148
 
149
- def open3_capture3_run_program(path)
149
+ def open3_capture3_run_program(path, env)
150
150
  Bundler.with_clean_env do
151
- Open3.capture3("#{ruby_cmd} #{path}")
151
+ Open3.capture3(env, "#{ruby_cmd} #{path}")
152
152
  end
153
153
  end
154
154
 
@@ -15,10 +15,7 @@
15
15
  - Preference.make_toolbox_name_to_preference_names_hash.each do |toolbox_name, preference_names|
16
16
  - preference_names.each do |n|
17
17
  .control-group{class: "toolbox_preferences #{toolbox_name}"}
18
- .controls
19
- = f2.label(n, class: "checkbox") do
20
- = preferences_field(f2, n)
21
- = t(n, scope: "helpers.label.user[preferences]")
18
+ = preferences_field(f2, n)
22
19
 
23
20
  - if Preference.general_preference_names.length > 0
24
21
  .page-header
@@ -28,7 +25,4 @@
28
25
 
29
26
  - Preference.general_preference_names.each do |n|
30
27
  .control-group
31
- .controls
32
- = f2.label(n, class: "checkbox") do
33
- = preferences_field(f2, n)
34
- = t(n, scope: "helpers.label.user[preferences]")
28
+ = preferences_field(f2, n)
@@ -32,6 +32,7 @@ ja:
32
32
  disabled_new_character: "キャラクターの追加を禁止する"
33
33
  enabled_readonly_ruby_mode: "プログラムを直接入力できないようにする"
34
34
  enabled_must_signin: "ログインしないと使えないようにする"
35
+ hardware_port: "ハードウェアの接続先"
35
36
 
36
37
  editor:
37
38
  index:
@@ -134,10 +134,9 @@ standalone:
134
134
  Preference.make_toolbox_name_to_preference_names_hash
135
135
  Preference.toolbox_names.each do |toolbox_name|
136
136
  f.puts("#toolbox_name: #{toolbox_name}")
137
- toolbox_name__preference_names.delete(toolbox_name).try(:each) do
138
- |preference_name|
139
- f.puts("##{preference_name}: true")
140
- end
137
+ preference_names =
138
+ toolbox_name__preference_names.delete(toolbox_name)
139
+ puts_preference_names(f, preference_names)
141
140
  f.puts
142
141
  end
143
142
  preference_names_list =
@@ -145,13 +144,22 @@ standalone:
145
144
  [Preference.general_preference_names,
146
145
  Preference.admin_preference_names]
147
146
  preference_names_list.each do |preference_names|
148
- preference_names.each do |preference_name|
149
- f.puts("##{preference_name}: true")
150
- end
147
+ puts_preference_names(f, preference_names)
151
148
  f.puts
152
149
  end
153
150
  end
154
151
  end
155
152
  end
153
+
154
+ def puts_preference_names(io, preference_names)
155
+ preference_names.try(:each) do |preference_name|
156
+ case preference_name
157
+ when Preference::BOOLEAN_FIELD_REGEXP
158
+ io.puts("##{preference_name}: true")
159
+ else
160
+ io.puts(%{##{preference_name}: ""})
161
+ end
162
+ end
163
+ end
156
164
  end
157
165
  end
@@ -1,3 +1,3 @@
1
1
  module SmalrubyEditor
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
@@ -69,7 +69,7 @@ Gem::Specification.new do |spec|
69
69
  ['haml-rails'],
70
70
  ['nokogiri'],
71
71
  ['settingslogic'],
72
- ['smalruby', '~> 0.1.6'],
72
+ ['smalruby', '~> 0.1.8'],
73
73
  ]
74
74
  runtime_dependencies << ['therubyracer'] unless is_windows
75
75
  runtime_dependencies.each do |args|
@@ -72,10 +72,12 @@ Feature: Preference - 設定
72
72
  And "user[preferences][disabled_add_character_from_beginning]" がチェックされていること
73
73
  And "user[preferences][disabled_new_character]" がチェックされていないこと
74
74
  And "user[preferences][enabled_readonly_ruby_mode]" がチェックされていないこと
75
+ And "user[preferences][hardware_port]" フィールドの値が "" であること
75
76
 
76
77
  When "user[preferences][disabled_add_character_from_beginning]" のチェックを外す
77
78
  And "user[preferences][disabled_new_character]" をチェックする
78
79
  And "user[preferences][enabled_readonly_ruby_mode]" をチェックする
80
+ And "user[preferences][hardware_port]" フィールドに "COM3" を指定する
79
81
  And "preference-modal-ok-button" をクリックする
80
82
  And JavaScriptによるリクエストが終わるまで待つ
81
83
 
@@ -87,3 +89,32 @@ Feature: Preference - 設定
87
89
  And "user[preferences][disabled_add_character_from_beginning]" がチェックされていないこと
88
90
  And "user[preferences][disabled_new_character]" がチェックされていること
89
91
  And "user[preferences][enabled_readonly_ruby_mode]" がチェックされていること
92
+ And "user[preferences][hardware_port]" フィールドの値が "COM3" であること
93
+
94
+ Scenario: 「キャラクターの追加を禁止する」を設定後、ログアウトせずにリロードしてもキャラクターの追加ボタンを表示しないこと
95
+ When ログインする
96
+ And サブメニューの "#preference-button" をクリックする
97
+ And "user[preferences][disabled_new_character]" をチェックする
98
+ And "preference-modal-ok-button" をクリックする
99
+ And JavaScriptによるリクエストが終わるまで待つ
100
+
101
+ Then "#preference-modal" が表示されていないこと
102
+ And "#add-character-item" が表示されていないこと
103
+
104
+ When ページをリロードする
105
+
106
+ And "#add-character-item" が表示されていないこと
107
+
108
+ Scenario: 「プログラムを直接入力できないようにする」を設定後、ログアウトせずにリロードしてもRubyモードでプログラムを直接入力できないこと
109
+ When ログインする
110
+ And サブメニューの "#preference-button" をクリックする
111
+ And "user[preferences][enabled_readonly_ruby_mode]" をチェックする
112
+ And "preference-modal-ok-button" をクリックする
113
+ And JavaScriptによるリクエストが終わるまで待つ
114
+
115
+ Then "#preference-modal" が表示されていないこと
116
+ And テキストエディタが編集できない状態であること
117
+
118
+ When ページをリロードする
119
+
120
+ Then テキストエディタが編集できない状態であること
@@ -75,3 +75,10 @@ step 'テキストエディタのプログラムは :program であること' do
75
75
  .getValue()
76
76
  JS
77
77
  end
78
+
79
+ step 'テキストエディタが編集できない状態であること' do
80
+ expect(page.evaluate_script(<<-JS)).to be_true
81
+ ace.edit('#{name_to(text_editor, :id)}')
82
+ .getReadOnly()
83
+ JS
84
+ end
@@ -0,0 +1,138 @@
1
+ # encoding: utf-8
2
+
3
+ step ':name が表示されていること' do |name|
4
+ expect(page).to have_selector(name_to(name))
5
+ end
6
+
7
+ step ':name が表示されていないこと' do |name|
8
+ expect(page).not_to have_selector(name_to(name))
9
+ end
10
+
11
+ step ':parent に :name が表示されていること' do |parent, name|
12
+ within(name_to(parent)) do
13
+ expect(page.all(name_to(name), visible: true)).not_to be_empty
14
+ end
15
+ end
16
+
17
+ step ':parent に :name が表示されていないこと' do |parent, name|
18
+ within(name_to(parent)) do
19
+ expect(page.all(name_to(name), visible: true)).to be_empty
20
+ end
21
+ end
22
+
23
+ step 'コンボボックス :name の :option_label を選択していること' do
24
+ |name, option_label|
25
+ expect(find(%{select[name="#{name}"] option[selected]}).text)
26
+ .to eq(option_label)
27
+ end
28
+
29
+ step 'コンボボックス :name の :option_label を選択していないこと' do
30
+ |name, option_label|
31
+ expect(find(%{select[name="#{name}"] option[selected]}).text)
32
+ .not_to eq(option_label)
33
+ end
34
+
35
+ step ':name がチェックされていること' do |name|
36
+ expect(find(%{input[type="checkbox"][name="#{name}"]})).to be_checked
37
+ end
38
+
39
+ step ':name がチェックされていないこと' do |name|
40
+ expect(find(%{input[type="checkbox"][name="#{name}"]})).not_to be_checked
41
+ end
42
+
43
+ step ':name にフォーカスがあること' do |name|
44
+ # HACK: 現在のPhantomJSでは$(':focus')は動作しない
45
+ # https://github.com/netzpirat/guard-jasmine/issues/48
46
+ expect(page.evaluate_script(<<-JS)).to be_true
47
+ $('#{name_to(name)}').get(0) == document.activeElement
48
+ JS
49
+ end
50
+
51
+ step ':name は :value であること' do |name, value|
52
+ expect(page.evaluate_script(<<-JS)).to eq(value)
53
+ $('#{name_to(name)}').val()
54
+ JS
55
+ end
56
+
57
+ step ':name フィールドの値が :value であること' do |name, value|
58
+ expect(page).to have_field(name, with: value)
59
+ end
60
+
61
+ step ':name に :message を含むこと' do |name, message|
62
+ expect(page.find(name_to(name))).to have_content(message)
63
+ end
64
+
65
+ step ':name に :message を含まないこと' do |name, message|
66
+ expect(page.find(name_to(name))).not_to have_content(message)
67
+ end
68
+
69
+ step ':filename をダウンロードすること' do |filename|
70
+ step 'ダウンロードが完了するまで待つ'
71
+ if poltergeist?
72
+ expect(page.response_headers['Content-Disposition'])
73
+ .to match(/\Aattachment; filename="#{filename}"\z/)
74
+ expect(page.response_headers['Content-Type'])
75
+ .to eq('text/plain; charset=utf-8')
76
+ elsif selenium?
77
+ expect(downloads_dir.join(filename)).to be_exist
78
+ end
79
+ end
80
+
81
+ step 'ダウンロードしないこと' do
82
+ if poltergeist?
83
+ expect(page.response_headers['Content-Disposition']).to be_nil
84
+ elsif selenium?
85
+ expect(downloads_dir).not_to be_exist
86
+ end
87
+ end
88
+
89
+ step '確認メッセージ :message を表示すること' do |message|
90
+ message.gsub!('\n', "\n")
91
+ if poltergeist?
92
+ actual = page.evaluate_script('window.confirmMsg')
93
+ page.execute_script('window.confirmMsg = null')
94
+ expect(actual).to eq(message)
95
+ elsif selenium?
96
+ expect(page.driver.browser.switch_to.alert.text).to eq(message)
97
+ page.driver.browser.switch_to.alert.dismiss
98
+ end
99
+ end
100
+
101
+ step '確認メッセージを表示しないこと' do
102
+ if poltergeist?
103
+ actual = page.evaluate_script('window.confirmMsg')
104
+ page.execute_script('window.confirmMsg = null')
105
+ expect(actual).to be_nil
106
+ elsif selenium?
107
+ expect {
108
+ page.driver.browser.switch_to.alert
109
+ }.to raise_exception(Selenium::WebDriver::Error::NoAlertPresentError)
110
+ end
111
+ end
112
+
113
+ step 'ホームディレクトリに :filename が存在すること' do |filename|
114
+ path = Pathname("~/#{filename}").expand_path
115
+ expect(path).to be_exist
116
+ end
117
+
118
+ step 'ホームディレクトリの :filename の内容が :program であること' do |filename, program|
119
+ path = Pathname("~/#{filename}").expand_path
120
+ expect(path.read).to eq(program)
121
+ end
122
+
123
+ step 'ホームディレクトリの :filename が次の内容であること:' do |filename, program|
124
+ path = Pathname("~/#{filename}").expand_path
125
+ expect(path.read).to eq(program)
126
+ end
127
+
128
+ step ':directory ディレクトリに :filename が存在すること' do
129
+ |directory, filename|
130
+ path = Pathname("#{directory}/#{filename}").expand_path
131
+ expect(path).to be_exist
132
+ end
133
+
134
+ step ':directory ディレクトリの :filename の内容が :program であること' do
135
+ |directory, filename, program|
136
+ path = Pathname("#{directory}/#{filename}").expand_path
137
+ expect(path.read).to eq(program)
138
+ end
@@ -26,39 +26,11 @@ step ':name 画面を表示する' do |name|
26
26
  send ':name にアクセスする', name
27
27
  end
28
28
 
29
- step ':name が表示されていること' do |name|
30
- expect(page).to have_selector(name_to(name))
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 :value を指定する' do |name, value|
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.0
4
+ version: 0.3.1
5
5
  platform: x86-mingw32
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.6
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.6
208
+ version: 0.1.8
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: bundler
211
211
  requirement: !ruby/object:Gem::Requirement
@@ -469,8 +469,8 @@ files:
469
469
  - public/422.html
470
470
  - public/500.html
471
471
  - public/apple-touch-icon.png
472
- - public/assets/application-5253d287046c0356ed5bdf79ed312e9d.js
473
- - public/assets/application-5253d287046c0356ed5bdf79ed312e9d.js.gz
472
+ - public/assets/application-277da50b978f4a4292b83a0f2ff521e6.js
473
+ - public/assets/application-277da50b978f4a4292b83a0f2ff521e6.js.gz
474
474
  - public/assets/application-f879948b97a781e3d996535a2a0585fa.css
475
475
  - public/assets/application-f879948b97a781e3d996535a2a0585fa.css.gz
476
476
  - public/assets/blockly/msg/js/en_us-d5e1938b2d57c1df954f4411b9165d10.js
@@ -493,7 +493,7 @@ files:
493
493
  - public/assets/jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png
494
494
  - public/assets/jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png
495
495
  - public/assets/loading-e77296be32d066d3e29d3bf9803fa417.gif
496
- - public/assets/manifest-005ad49acadb6769ff8289e7543e777d.json
496
+ - public/assets/manifest-c9964fd12336c02e9a368ae822cc6cbe.json
497
497
  - public/assets/msg/en_us-a98cc83805d44f5f675fe6eac2c955ec.js
498
498
  - public/assets/msg/en_us-a98cc83805d44f5f675fe6eac2c955ec.js.gz
499
499
  - public/assets/msg/ja-243b0a55ef1086ef2180af94c422cb5e.js
@@ -679,12 +679,13 @@ files:
679
679
  - spec/models/concerns/ruby_to_block_spec.rb
680
680
  - spec/models/source_code_spec.rb
681
681
  - spec/spec_helper.rb
682
- - spec/steps/base_steps.rb
683
682
  - spec/steps/block_mode_steps.rb
684
683
  - spec/steps/fix_turnip.rb
685
684
  - spec/steps/global_variable.rb
686
685
  - spec/steps/standalone_steps.rb
687
686
  - spec/steps/text_editor_steps.rb
687
+ - spec/steps/then_steps.rb
688
+ - spec/steps/when_steps.rb
688
689
  - spec/support/capybara.rb
689
690
  - spec/support/env.rb
690
691
  - spec/support/feature_helper.rb
@@ -857,12 +858,13 @@ test_files:
857
858
  - spec/models/concerns/ruby_to_block_spec.rb
858
859
  - spec/models/source_code_spec.rb
859
860
  - spec/spec_helper.rb
860
- - spec/steps/base_steps.rb
861
861
  - spec/steps/block_mode_steps.rb
862
862
  - spec/steps/fix_turnip.rb
863
863
  - spec/steps/global_variable.rb
864
864
  - spec/steps/standalone_steps.rb
865
865
  - spec/steps/text_editor_steps.rb
866
+ - spec/steps/then_steps.rb
867
+ - spec/steps/when_steps.rb
866
868
  - spec/support/capybara.rb
867
869
  - spec/support/env.rb
868
870
  - spec/support/feature_helper.rb