smalruby-editor 0.2.6-x86-mingw32 → 0.2.7-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.

Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -0
  3. data/Guardfile +2 -0
  4. data/app/assets/javascripts/blocks/hardware.js.coffee.erb +1 -1
  5. data/app/assets/javascripts/fix_blockly.js.erb +0 -50
  6. data/app/assets/javascripts/generators/ruby.js.coffee.erb +18 -4
  7. data/app/assets/javascripts/models/source_code.js +1 -1
  8. data/app/assets/javascripts/msg/en_us.js +1 -0
  9. data/app/assets/javascripts/msg/ja.js +4 -0
  10. data/app/assets/javascripts/smalruby.js.coffee.erb +50 -6
  11. data/app/assets/javascripts/views/main_menu_view.js.coffee.erb +14 -4
  12. data/app/assets/javascripts/views/preference_modal_view.js.coffee.erb +71 -0
  13. data/app/assets/javascripts/views/signin_modal_view.js.coffee.erb +5 -4
  14. data/app/assets/stylesheets/application.css +1 -0
  15. data/app/assets/stylesheets/preference-modal.css.scss +22 -0
  16. data/app/assets/stylesheets/toolbox.css.scss.erb +36 -0
  17. data/app/controllers/application_controller.rb +20 -4
  18. data/app/controllers/editor_controller.rb +4 -0
  19. data/app/controllers/sessions_controller.rb +7 -4
  20. data/app/controllers/source_codes_controller.rb +2 -2
  21. data/app/controllers/users_controller.rb +22 -0
  22. data/app/helpers/application_helper.rb +4 -4
  23. data/app/helpers/sessions_helper.rb +0 -0
  24. data/app/helpers/users_helper.rb +10 -0
  25. data/app/models/concerns/ruby_to_block/block/hardware_init_hardware.rb +0 -6
  26. data/app/models/concerns/ruby_to_block/block/hardware_operation.rb +0 -0
  27. data/app/models/preference.rb +71 -0
  28. data/app/models/source_code.rb +4 -0
  29. data/app/models/user.rb +26 -0
  30. data/app/views/editor/_block_tab.html.haml +5 -6
  31. data/app/views/editor/_load_modal.html.haml +2 -2
  32. data/app/views/editor/_preference_modal.html.haml +16 -0
  33. data/app/views/editor/_signin_modal.html.haml +1 -1
  34. data/app/views/editor/_toolbox_default.html.haml +86 -79
  35. data/app/views/editor/{_toolbox_raspberrypi.html.haml → _toolbox_smalrubot.html.haml} +72 -105
  36. data/app/views/editor/_toolbox_smalrubot_s1.html.haml +1 -196
  37. data/app/views/editor/_toolbox_smalrubot_v3.html.haml +1 -196
  38. data/app/views/editor/index.html.haml +11 -4
  39. data/app/views/editor/toolbox.html.haml +1 -0
  40. data/app/views/layouts/application.html.erb +1 -1
  41. data/app/views/users/preferences.html.haml +34 -0
  42. data/config/application.rb +1 -1
  43. data/config/locales/en.yml +30 -0
  44. data/config/locales/ja.yml +30 -0
  45. data/config/routes.rb +4 -57
  46. data/db/migrate/20150513061200_create_users.rb +10 -0
  47. data/db/migrate/20150513061250_add_index_name_on_users.rb +9 -0
  48. data/db/schema.rb +10 -1
  49. data/lib/smalruby_editor.rb +22 -24
  50. data/lib/smalruby_editor/version.rb +1 -1
  51. data/smalruby-editor.gemspec +0 -0
  52. data/spec/acceptance/block_mode/blocks/hardware/button_pressed_or_released.feature +2 -0
  53. data/spec/acceptance/block_mode/blocks/hardware/init_hardware.feature +1 -0
  54. data/spec/acceptance/block_mode/blocks/hardware/led_turn_off.feature +11 -1
  55. data/spec/acceptance/block_mode/blocks/hardware/led_turn_on.feature +11 -1
  56. data/spec/acceptance/block_mode/blocks/hardware/motor_driver.feature +7 -1
  57. data/spec/acceptance/block_mode/blocks/hardware/motor_driver_speed.feature +2 -0
  58. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_set_color.feature +9 -12
  59. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_turn_off.feature +9 -12
  60. data/spec/acceptance/block_mode/blocks/hardware/sensor_value.feature +59 -60
  61. data/spec/acceptance/block_mode/blocks/hardware/servo_set_position.feature +76 -67
  62. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_s1_action.feature +9 -12
  63. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_s1_action_with_sec.feature +9 -11
  64. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_s1_dc_motor_power_ratio.feature +11 -12
  65. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_s1_led_turn_on_or_off.feature +9 -10
  66. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action.feature +9 -12
  67. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action_with_sec.feature +9 -11
  68. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_dc_motor_power_ratio.feature +11 -12
  69. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_led_turn_on_or_off.feature +9 -12
  70. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_sensor_value.feature +11 -12
  71. data/spec/acceptance/block_mode/blocks/hardware/two_wheel_drive_car.feature +7 -1
  72. data/spec/acceptance/block_mode/blocks/hardware/two_wheel_drive_car_speed.feature +2 -0
  73. data/spec/acceptance/standalone/preference.feature +92 -0
  74. data/{demos → spec/fixtures/files}/hardware_led.rb.xml +0 -0
  75. data/spec/javascripts/models/source_code_spec.coffee +0 -0
  76. data/spec/models/concerns/ruby_to_block/block/hardware__smalrubot_spec.rb +1 -1
  77. data/spec/models/concerns/ruby_to_block/block/hardware_spec.rb +4 -4
  78. data/spec/models/concerns/ruby_to_block_spec.rb +1 -1
  79. data/spec/models/source_code_spec.rb +1 -11
  80. data/spec/spec_helper.rb +8 -0
  81. data/spec/steps/base_steps.rb +68 -16
  82. data/spec/steps/standalone_steps.rb +21 -0
  83. data/spec/steps/text_editor_steps.rb +8 -8
  84. data/spec/support/feature_helper.rb +13 -0
  85. data/vendor/assets/javascripts/blockly/blockly_compressed.js +500 -454
  86. data/vendor/assets/javascripts/blockly/blocks_compressed.js +29 -28
  87. data/vendor/assets/javascripts/blockly/msg/js/ja.js +2 -1
  88. metadata +33 -35
  89. data/app/assets/stylesheets/toolbox_default.css.scss.erb +0 -34
  90. data/app/assets/stylesheets/toolbox_raspberrypi.css.scss.erb +0 -32
  91. data/app/assets/stylesheets/toolbox_smalrubot_s1.css.scss.erb +0 -32
  92. data/app/assets/stylesheets/toolbox_smalrubot_v3.css.scss.erb +0 -32
  93. data/demos/adjust_2wd_car.rb.xml +0 -179
  94. data/lib/smalruby_editor/config.rb +0 -24
  95. data/spec/controllers/editor_controller_spec.rb +0 -12
  96. data/spec/controllers/sessions_controller_spec.rb +0 -74
  97. data/spec/helpers/sessions_helper_spec.rb +0 -15
@@ -18,7 +18,13 @@
18
18
  """
19
19
  かつ ブロックからソースコードを生成する
20
20
 
21
- ならば テキストエディタのプログラムは "" であること
21
+ ならば テキストエディタのプログラムは以下であること:
22
+ """
23
+ require "smalruby"
24
+
25
+ init_hardware
26
+
27
+ """
22
28
 
23
29
  # キャラクターとブロックを配置する
24
30
  もし 次のブロック("hardware_two_wheel_drive_car_<ブロック名のサフィックス>")を配置する:
@@ -36,6 +36,8 @@
36
36
  """
37
37
  require "smalruby"
38
38
 
39
+ init_hardware
40
+
39
41
  p("")
40
42
 
41
43
  """
@@ -0,0 +1,92 @@
1
+ # encoding: utf-8
2
+ # language: en
3
+ @javascript
4
+ @standalone
5
+ Feature: Preference - 設定
6
+ Background:
7
+ When セッションをクリアする
8
+ And '/' にアクセスする
9
+
10
+ Scenario: ログインして設定ダイアログを表示する
11
+ When "submenu-button" をクリックする
12
+
13
+ Then "#submenu" に "#preference-button" が表示されていないこと
14
+
15
+ When ログインする
16
+ And "submenu-button" をクリックする
17
+
18
+ Then "#submenu" に "#preference-button" が表示されていること
19
+
20
+ When サブメニューの "#preference-button" をクリックする
21
+ And JavaScriptによるアニメーションが終わるまで待つ
22
+
23
+ Then "#preference-modal" が表示されていること
24
+
25
+ When "preference-modal-ok-button" をクリックする
26
+ And JavaScriptによるリクエストが終わるまで待つ
27
+
28
+ Then "#preference-modal" が表示されていないこと
29
+
30
+ When ログアウトする
31
+ And "submenu-button" をクリックする
32
+
33
+ Then "#submenu" に "#preference-button" が表示されていないこと
34
+
35
+ Scenario: ツールボックス "通常" の設定を変更する
36
+ When ログインする
37
+ And サブメニューの "#preference-button" をクリックする
38
+
39
+ Then "#preference-modal" が表示されていること
40
+ And コンボボックス "user[preferences][toolbox_name]" の "通常" を選択していること
41
+ And "#user_preferences_toolbox__default__enabled_hardware_blocks" が表示されていること
42
+ And "user[preferences][toolbox__default__enabled_hardware_blocks]" がチェックされていないこと
43
+ And "#user_preferences_toolbox__default__enabled_smalrubot_v3_blocks" が表示されていること
44
+ And "user[preferences][toolbox__default__enabled_smalrubot_v3_blocks]" がチェックされていないこと
45
+ And "#user_preferences_toolbox__default__enabled_smalrubot_s1_blocks" が表示されていること
46
+ And "user[preferences][toolbox__default__enabled_smalrubot_s1_blocks]" がチェックされていないこと
47
+
48
+ When "user[preferences][toolbox__default__enabled_hardware_blocks]" をチェックする
49
+ And "user[preferences][toolbox__default__enabled_smalrubot_v3_blocks]" をチェックする
50
+ And "user[preferences][toolbox__default__enabled_smalrubot_s1_blocks]" をチェックする
51
+ And "preference-modal-ok-button" をクリックする
52
+ And JavaScriptによるリクエストが終わるまで待つ
53
+
54
+ Then "#preference-modal" が表示されていないこと
55
+
56
+ When サブメニューの "#preference-button" をクリックする
57
+
58
+ Then "#preference-modal" が表示されていること
59
+ And コンボボックス "user[preferences][toolbox_name]" の "通常" を選択していること
60
+ And "#user_preferences_toolbox__default__enabled_hardware_blocks" が表示されていること
61
+ And "user[preferences][toolbox__default__enabled_hardware_blocks]" がチェックされていること
62
+ And "#user_preferences_toolbox__default__enabled_smalrubot_v3_blocks" が表示されていること
63
+ And "user[preferences][toolbox__default__enabled_smalrubot_v3_blocks]" がチェックされていること
64
+ And "#user_preferences_toolbox__default__enabled_smalrubot_s1_blocks" が表示されていること
65
+ And "user[preferences][toolbox__default__enabled_smalrubot_s1_blocks]" がチェックされていること
66
+
67
+ Scenario: 一般設定を変更する
68
+ When ログインする
69
+ And サブメニューの "#preference-button" をクリックする
70
+
71
+ Then "#preference-modal" が表示されていること
72
+ And "user[preferences][disabled_add_character_from_beginning]" がチェックされていること
73
+ And "user[preferences][disabled_new_character]" がチェックされていないこと
74
+ And "user[preferences][enabled_auto_init_hardware]" がチェックされていないこと
75
+ And "user[preferences][enabled_readonly_ruby_mode]" がチェックされていないこと
76
+
77
+ When "user[preferences][disabled_add_character_from_beginning]" のチェックを外す
78
+ And "user[preferences][disabled_new_character]" をチェックする
79
+ And "user[preferences][enabled_auto_init_hardware]" をチェックする
80
+ And "user[preferences][enabled_readonly_ruby_mode]" をチェックする
81
+ And "preference-modal-ok-button" をクリックする
82
+ And JavaScriptによるリクエストが終わるまで待つ
83
+
84
+ Then "#preference-modal" が表示されていないこと
85
+
86
+ When サブメニューの "#preference-button" をクリックする
87
+
88
+ Then "#preference-modal" が表示されていること
89
+ And "user[preferences][disabled_add_character_from_beginning]" がチェックされていないこと
90
+ And "user[preferences][disabled_new_character]" がチェックされていること
91
+ And "user[preferences][enabled_auto_init_hardware]" がチェックされていること
92
+ And "user[preferences][enabled_readonly_ruby_mode]" がチェックされていること
File without changes
File without changes
@@ -11,6 +11,7 @@ describe RubyToBlock::Block, 'Smalrubot blocks', to_blocks: true do
11
11
  require "smalruby"
12
12
 
13
13
  init_hardware
14
+
14
15
  car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
15
16
 
16
17
  car1.on(:start) do
@@ -69,7 +70,6 @@ car1.smalrubot_#{smalrubot_version}.right_dc_motor_power_ratio = 90
69
70
  it '結果が正しいこと' do
70
71
  should eq_block_xml(<<-XML)
71
72
  <character name="car1" x="0" y="0" angle="0" costumes="car1.png" />
72
- <block type="hardware_init_hardware" />
73
73
  <block type="character_new">
74
74
  <field name="NAME">car1</field>
75
75
  <statement name="DO">
@@ -9,6 +9,7 @@ describe RubyToBlock::Block, 'ハードウェアジャンル', to_blocks: true d
9
9
  require "smalruby"
10
10
 
11
11
  init_hardware
12
+
12
13
  car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
13
14
 
14
15
  car1.on(:start) do
@@ -40,7 +41,6 @@ end
40
41
  it '結果が正しいこと' do
41
42
  should eq_block_xml(<<-XML)
42
43
  <character name="car1" x="0" y="0" angle="0" costumes="car1.png" />
43
- <block type="hardware_init_hardware" />
44
44
  <block type="character_new">
45
45
  <field name="NAME">car1</field>
46
46
  <statement name="DO">
@@ -201,6 +201,7 @@ end
201
201
  require "smalruby"
202
202
 
203
203
  init_hardware
204
+
204
205
  car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
205
206
 
206
207
  car1.on(:start) do
@@ -220,7 +221,6 @@ car1.motor_driver("D3").stop
220
221
  it '結果が正しいこと' do
221
222
  should eq_block_xml(<<-XML)
222
223
  <character name="car1" x="0" y="0" angle="0" costumes="car1.png" />
223
- <block type="hardware_init_hardware" />
224
224
  <block type="character_new">
225
225
  <field name="NAME">car1</field>
226
226
  <statement name="DO">
@@ -292,6 +292,7 @@ car1.motor_driver("D3").stop
292
292
  require "smalruby"
293
293
 
294
294
  init_hardware
295
+
295
296
  car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
296
297
 
297
298
  car1.on(:start) do
@@ -311,7 +312,6 @@ car1.two_wheel_drive_car("D5").stop
311
312
  it '結果が正しいこと' do
312
313
  should eq_block_xml(<<-XML)
313
314
  <character name="car1" x="0" y="0" angle="0" costumes="car1.png" />
314
- <block type="hardware_init_hardware" />
315
315
  <block type="character_new">
316
316
  <field name="NAME">car1</field>
317
317
  <statement name="DO">
@@ -384,6 +384,7 @@ car1.two_wheel_drive_car("D5").stop
384
384
  require "smalruby"
385
385
 
386
386
  init_hardware
387
+
387
388
  car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
388
389
 
389
390
  car1.on(:start) do
@@ -400,7 +401,6 @@ p(car1.button("D3").pressed?)
400
401
  it '結果が正しいこと' do
401
402
  should eq_block_xml(<<-XML)
402
403
  <character name="car1" x="0" y="0" angle="0" costumes="car1.png" />
403
- <block type="hardware_init_hardware" />
404
404
  <block type="character_new">
405
405
  <field name="NAME">car1</field>
406
406
  <statement name="DO">
@@ -419,6 +419,7 @@ end
419
419
  require "smalruby"
420
420
 
421
421
  init_hardware
422
+
422
423
  frog1 = Character.new(costume: "frog1.png", x: 261, y: 191, angle: 0)
423
424
 
424
425
  frog1.on(:click) do
@@ -440,7 +441,6 @@ end
440
441
  it '結果が正しいこと' do
441
442
  should eq_block_xml(<<-XML)
442
443
  <character name="frog1" x="261" y="191" angle="0" costumes="frog1.png" />
443
- <block type="hardware_init_hardware" />
444
444
  <block type="character_new">
445
445
  <field name="NAME">frog1</field>
446
446
  <statement name="DO">
@@ -102,16 +102,6 @@ describe SourceCode, 'Rubyのソースコードを表現するモデル' do
102
102
  filename: 'pong.rb',
103
103
  imageUrl: '/smalruby/assets/cat2.png',
104
104
  },
105
- hardware_led: {
106
- title: 'ライトをぴかっとさせるでよ',
107
- filename: 'hardware_led.rb',
108
- imageUrl: '/smalruby/assets/frog1.png',
109
- },
110
- adjust_2wd_car: {
111
- title: '2WD車の左右のモーターを調整する',
112
- filename: 'adjust_2wd_car.rb',
113
- imageUrl: '/smalruby/assets/car2.png',
114
- },
115
105
  }.each do |name, summary|
116
106
  _rb_path = "demos/#{name}.rb"
117
107
  context "'#{_rb_path + '.xml'}'" do
@@ -152,7 +142,7 @@ describe SourceCode, 'Rubyのソースコードを表現するモデル' do
152
142
  subject { source_code.include_block?(type) }
153
143
 
154
144
  context 'ソースコードにハードウェア関連ブロックを含む場合' do
155
- let(:xml_path) { 'demos/adjust_2wd_car.rb.xml' }
145
+ let(:xml_path) { 'spec/fixtures/files/hardware_led.rb.xml' }
156
146
 
157
147
  context '引数にhardware_init_hardwareを指定する' do
158
148
  let(:type) { 'hardware_init_hardware' }
data/spec/spec_helper.rb CHANGED
@@ -98,6 +98,14 @@ RSpec.configure do |config|
98
98
  config.include ERB::Util, type: :helper
99
99
  config.include ERB::Util, type: :feature
100
100
  config.include ActionView::Helpers::JavaScriptHelper, type: :feature
101
+ config.include FeatureHelper, type: :feature
102
+
103
+ config.before(:all) do
104
+ Preference.defaults.each do |key, value|
105
+ Preference[key] = value
106
+ end
107
+ Preference["disabled_add_character_from_beginning"] = true
108
+ end
101
109
 
102
110
  config.after(javascript: true) do
103
111
  page.execute_script('window.onbeforeunload = null')
@@ -6,7 +6,7 @@ end
6
6
 
7
7
  step ':name にアクセスする' do |name|
8
8
  page.driver.headers = { 'Accept-Language' => 'ja' }
9
- visit NAME_INFO[name][:path]
9
+ visit name_to(name, :path)
10
10
 
11
11
  if poltergeist?
12
12
  page.execute_script('window.confirmResult = true')
@@ -27,16 +27,60 @@ step ':name 画面を表示する' do |name|
27
27
  end
28
28
 
29
29
  step ':name が表示されていること' do |name|
30
- expect(page).to have_selector(NAME_INFO[name][:selector])
30
+ expect(page).to have_selector(name_to(name))
31
31
  end
32
32
 
33
33
  step ':name が表示されていないこと' do |name|
34
- expect(page).not_to have_selector(NAME_INFO[name][:selector])
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)
59
+ end
60
+
61
+ step ':name に :value を指定する' do |name, value|
62
+ fill_in(name_to(name, :id), with: value)
63
+ end
64
+
65
+ step ':name をチェックする' do |name|
66
+ check(name)
67
+ end
68
+
69
+ step ':name のチェックを外す' do |name|
70
+ uncheck(name)
71
+ end
72
+
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
35
79
  end
36
80
 
37
81
  step ':name にタブを切り替える' do |name|
38
82
  page.execute_script(<<-JS)
39
- $('#tabs a[href=\"#{NAME_INFO[name][:selector]}\"]').click()
83
+ $('#tabs a[href=\"#{name_to(name)}\"]').click()
40
84
  JS
41
85
  end
42
86
 
@@ -45,10 +89,6 @@ step ':name タブを表示する' do |name|
45
89
  step %("#{name}タブ" にタブを切り替える)
46
90
  end
47
91
 
48
- step ':name に :value を指定する' do |name, value|
49
- fill_in(NAME_INFO.key?(name) ? NAME_INFO[name][:id] : name, with: value)
50
- end
51
-
52
92
  step 'プログラムの名前に :filename を指定する' do |filename|
53
93
  step %("プログラム名の入力欄" に "#{filename}" を指定する)
54
94
  end
@@ -56,12 +96,14 @@ end
56
96
  step 'サブメニューの :name をクリックする' do |name|
57
97
  # HACK: 以下では期待通りの動作にならなかったのでjQueryで無理やり実現した
58
98
  # click_on('submenu-button')
59
- # click_on(NAME_INFO[name][:id])
60
- page.execute_script("$('#{NAME_INFO[name][:selector]}').click()")
99
+ # click_on(name_to(name, :id))
100
+ page.execute_script("$('#{name_to(name)}').click()")
101
+ step %{JavaScriptによるリクエストが終わるまで待つ}
102
+ step %{JavaScriptによるアニメーションが終わるまで待つ}
61
103
  end
62
104
 
63
105
  step ':name をクリックする' do |name|
64
- click_on(NAME_INFO[name][:id])
106
+ click_on(name_to(name, :id))
65
107
  end
66
108
 
67
109
  step 'ダウンロードが完了するまで待つ' do
@@ -98,7 +140,7 @@ end
98
140
 
99
141
  step ':name にフォーカスを移す' do |name|
100
142
  page.execute_script(<<-JS)
101
- $('#{NAME_INFO[name][:selector]}').focus()
143
+ $('#{name_to(name)}').focus()
102
144
  JS
103
145
  end
104
146
 
@@ -106,7 +148,7 @@ step ':name にフォーカスがあること' do |name|
106
148
  # HACK: 現在のPhantomJSでは$(':focus')は動作しない
107
149
  # https://github.com/netzpirat/guard-jasmine/issues/48
108
150
  expect(page.evaluate_script(<<-JS)).to be_true
109
- $('#{NAME_INFO[name][:selector]}').get(0) == document.activeElement
151
+ $('#{name_to(name)}').get(0) == document.activeElement
110
152
  JS
111
153
  end
112
154
 
@@ -145,16 +187,16 @@ end
145
187
 
146
188
  step ':name は :value であること' do |name, value|
147
189
  expect(page.evaluate_script(<<-JS)).to eq(value)
148
- $('#{NAME_INFO[name][:selector]}').val()
190
+ $('#{name_to(name)}').val()
149
191
  JS
150
192
  end
151
193
 
152
194
  step ':name に :message を含むこと' do |name, message|
153
- expect(page.find(NAME_INFO[name][:selector])).to have_content(message)
195
+ expect(page.find(name_to(name))).to have_content(message)
154
196
  end
155
197
 
156
198
  step ':name に :message を含まないこと' do |name, message|
157
- expect(page.find(NAME_INFO[name][:selector])).not_to have_content(message)
199
+ expect(page.find(name_to(name))).not_to have_content(message)
158
200
  end
159
201
 
160
202
  step 'ページをリロードする' do
@@ -278,3 +320,13 @@ step ':directory ディレクトリの :filename の内容が :program である
278
320
  path = Pathname("#{directory}/#{filename}").expand_path
279
321
  expect(path.read).to eq(program)
280
322
  end
323
+
324
+ step 'ページを表示する' do
325
+ # no-op
326
+ end
327
+
328
+ steps_for :debug do
329
+ step 'ページを表示する' do
330
+ save_and_open_page
331
+ end
332
+ end
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+
3
+ step ":name としてログインする" do |name|
4
+ step %{"signin-button" をクリックする}
5
+ step %{JavaScriptによるアニメーションが終わるまで待つ}
6
+ step %{"signin-modal-username" に "#{name}" を指定する}
7
+ step %{"signin-modal-ok-button" をクリックする}
8
+ step %{JavaScriptによるリクエストが終わるまで待つ}
9
+ step %{JavaScriptによるアニメーションが終わるまで待つ}
10
+ end
11
+
12
+ step "ログインする" do
13
+ step %{"1102" としてログインする}
14
+ end
15
+
16
+ step "ログアウトする" do
17
+ step %{"submenu-button" をクリックする}
18
+ step %{サブメニューの "#signout-button" をクリックする}
19
+ step %{JavaScriptによるリクエストが終わるまで待つ}
20
+ step %{"#main-menu" に "ログイン" を含むこと}
21
+ end
@@ -4,13 +4,13 @@ text_editor = 'テキストエディタ'
4
4
 
5
5
  step 'テキストエディタにフォーカスがあること' do
6
6
  expect(page.evaluate_script(<<-JS)).to be_true
7
- ace.edit('#{NAME_INFO[text_editor][:id]}').isFocused()
7
+ ace.edit('#{name_to(text_editor, :id)}').isFocused()
8
8
  JS
9
9
  end
10
10
 
11
11
  step 'テキストエディタの :row 行目の :column 文字目にカーソルがあること' do |row, column|
12
12
  get_cursor_position_js =
13
- "ace.edit('#{NAME_INFO[text_editor][:id]}').getCursorPosition()"
13
+ "ace.edit('#{name_to(text_editor, :id)}').getCursorPosition()"
14
14
  expect(page.evaluate_script("#{get_cursor_position_js}.row")).to eq(row.to_i)
15
15
  expect(page.evaluate_script("#{get_cursor_position_js}.column"))
16
16
  .to eq(column.to_i)
@@ -22,7 +22,7 @@ end
22
22
 
23
23
  step 'テキストエディタにプログラムを入力済みである:' do |program|
24
24
  page.execute_script(<<-JS)
25
- ace.edit('#{NAME_INFO[text_editor][:id]}')
25
+ ace.edit('#{name_to(text_editor, :id)}')
26
26
  .getSession()
27
27
  .getDocument()
28
28
  .setValue('#{program.gsub(/'/, "\\\\'").gsub(/\r?\n/, '\n')}')
@@ -31,7 +31,7 @@ end
31
31
 
32
32
  step 'テキストエディタに :filename を読み込むこと' do |filename|
33
33
  js = <<-JS
34
- ace.edit('#{NAME_INFO[text_editor][:id]}')
34
+ ace.edit('#{name_to(text_editor, :id)}')
35
35
  .getSession()
36
36
  .getDocument()
37
37
  .getValue()
@@ -42,7 +42,7 @@ end
42
42
 
43
43
  step 'テキストエディタのプログラムは以下であること:' do |program|
44
44
  expect(page.evaluate_script(<<-JS)).to eq(program)
45
- ace.edit('#{NAME_INFO[text_editor][:id]}')
45
+ ace.edit('#{name_to(text_editor, :id)}')
46
46
  .getSession()
47
47
  .getDocument()
48
48
  .getValue()
@@ -51,7 +51,7 @@ end
51
51
 
52
52
  step 'テキストエディタのプログラムは以下を含むこと:' do |program|
53
53
  expect(page.evaluate_script(<<-JS)).to include(program)
54
- ace.edit('#{NAME_INFO[text_editor][:id]}')
54
+ ace.edit('#{name_to(text_editor, :id)}')
55
55
  .getSession()
56
56
  .getDocument()
57
57
  .getValue()
@@ -60,7 +60,7 @@ end
60
60
 
61
61
  step 'テキストエディタのプログラムは以下を含まないこと:' do |program|
62
62
  expect(page.evaluate_script(<<-JS)).not_to include(program)
63
- ace.edit('#{NAME_INFO[text_editor][:id]}')
63
+ ace.edit('#{name_to(text_editor, :id)}')
64
64
  .getSession()
65
65
  .getDocument()
66
66
  .getValue()
@@ -69,7 +69,7 @@ end
69
69
 
70
70
  step 'テキストエディタのプログラムは :program であること' do |program|
71
71
  expect(page.evaluate_script(<<-JS)).to eq(program)
72
- ace.edit('#{NAME_INFO[text_editor][:id]}')
72
+ ace.edit('#{name_to(text_editor, :id)}')
73
73
  .getSession()
74
74
  .getDocument()
75
75
  .getValue()