RubyApp 0.0.6

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.
Files changed (218) hide show
  1. data/.gitignore +13 -0
  2. data/.rvmrc +1 -0
  3. data/Gemfile +4 -0
  4. data/README.md +0 -0
  5. data/bin/console.rb +8 -0
  6. data/bin/ruby_app +168 -0
  7. data/features/breadcrumbs.feature +11 -0
  8. data/features/content.feature +16 -0
  9. data/features/default.feature +5 -0
  10. data/features/dialog.feature +56 -0
  11. data/features/exception.feature +53 -0
  12. data/features/input.feature +13 -0
  13. data/features/list.feature +12 -0
  14. data/features/month.feature +14 -0
  15. data/features/step_definitions/default_macros.rb +16 -0
  16. data/features/step_definitions/default_steps.rb +36 -0
  17. data/features/support/env.rb +12 -0
  18. data/lib/ruby_app.rb +1 -0
  19. data/lib/ruby_app/application.rb +72 -0
  20. data/lib/ruby_app/config.ru +27 -0
  21. data/lib/ruby_app/config.yml +15 -0
  22. data/lib/ruby_app/configuration.rb +44 -0
  23. data/lib/ruby_app/element.rb +120 -0
  24. data/lib/ruby_app/elements/base/base_dialog.css.haml +9 -0
  25. data/lib/ruby_app/elements/base/base_dialog.html.haml +4 -0
  26. data/lib/ruby_app/elements/base/base_dialog.rb +64 -0
  27. data/lib/ruby_app/elements/base/base_page.css.haml +13 -0
  28. data/lib/ruby_app/elements/base/base_page.html.haml +20 -0
  29. data/lib/ruby_app/elements/base/base_page.js.haml +97 -0
  30. data/lib/ruby_app/elements/base/base_page.rb +80 -0
  31. data/lib/ruby_app/elements/button.html.haml +4 -0
  32. data/lib/ruby_app/elements/button.rb +19 -0
  33. data/lib/ruby_app/elements/calendars/base/base_month.css.haml +10 -0
  34. data/lib/ruby_app/elements/calendars/base/base_month.html.haml +42 -0
  35. data/lib/ruby_app/elements/calendars/base/base_month.js.haml +18 -0
  36. data/lib/ruby_app/elements/calendars/base/base_month.rb +101 -0
  37. data/lib/ruby_app/elements/calendars/month.rb +27 -0
  38. data/lib/ruby_app/elements/click.js.haml +10 -0
  39. data/lib/ruby_app/elements/click.rb +44 -0
  40. data/lib/ruby_app/elements/dialog.rb +23 -0
  41. data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.css.haml +9 -0
  42. data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.html.haml +7 -0
  43. data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.rb +27 -0
  44. data/lib/ruby_app/elements/dialogs/base/base_close_dialog.css.haml +11 -0
  45. data/lib/ruby_app/elements/dialogs/base/base_close_dialog.html.haml +6 -0
  46. data/lib/ruby_app/elements/dialogs/base/base_close_dialog.js.haml +2 -0
  47. data/lib/ruby_app/elements/dialogs/base/base_close_dialog.rb +33 -0
  48. data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.css.haml +15 -0
  49. data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.html.haml +8 -0
  50. data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.js.haml +2 -0
  51. data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.rb +40 -0
  52. data/lib/ruby_app/elements/dialogs/blank_dialog.html.haml +9 -0
  53. data/lib/ruby_app/elements/dialogs/blank_dialog.rb +22 -0
  54. data/lib/ruby_app/elements/dialogs/busy_dialog.rb +22 -0
  55. data/lib/ruby_app/elements/dialogs/calendars/month_dialog.css.haml +19 -0
  56. data/lib/ruby_app/elements/dialogs/calendars/month_dialog.html.haml +18 -0
  57. data/lib/ruby_app/elements/dialogs/calendars/month_dialog.js.haml +3 -0
  58. data/lib/ruby_app/elements/dialogs/calendars/month_dialog.rb +52 -0
  59. data/lib/ruby_app/elements/dialogs/close_dialog.rb +22 -0
  60. data/lib/ruby_app/elements/dialogs/confirmation_dialog.html.haml +8 -0
  61. data/lib/ruby_app/elements/dialogs/confirmation_dialog.rb +26 -0
  62. data/lib/ruby_app/elements/dialogs/exception_dialog.html.haml +8 -0
  63. data/lib/ruby_app/elements/dialogs/exception_dialog.rb +23 -0
  64. data/lib/ruby_app/elements/dialogs/message_dialog.html.haml +8 -0
  65. data/lib/ruby_app/elements/dialogs/message_dialog.rb +26 -0
  66. data/lib/ruby_app/elements/dialogs/yes_no_dialog.rb +22 -0
  67. data/lib/ruby_app/elements/exception_element.html.haml +7 -0
  68. data/lib/ruby_app/elements/exception_element.rb +19 -0
  69. data/lib/ruby_app/elements/input.html.haml +3 -0
  70. data/lib/ruby_app/elements/input.js.haml +9 -0
  71. data/lib/ruby_app/elements/input.rb +54 -0
  72. data/lib/ruby_app/elements/inputs/duration_input.rb +46 -0
  73. data/lib/ruby_app/elements/link.html.haml +4 -0
  74. data/lib/ruby_app/elements/link.rb +19 -0
  75. data/lib/ruby_app/elements/list.html.haml +9 -0
  76. data/lib/ruby_app/elements/list.js.haml +10 -0
  77. data/lib/ruby_app/elements/list.rb +55 -0
  78. data/lib/ruby_app/elements/lists/select.html.haml +14 -0
  79. data/lib/ruby_app/elements/lists/select.js.haml +10 -0
  80. data/lib/ruby_app/elements/lists/select.rb +47 -0
  81. data/lib/ruby_app/elements/markdown.html.haml +5 -0
  82. data/lib/ruby_app/elements/markdown.js.haml +10 -0
  83. data/lib/ruby_app/elements/markdown.rb +51 -0
  84. data/lib/ruby_app/elements/navigation/back_button.html.haml +2 -0
  85. data/lib/ruby_app/elements/navigation/back_button.rb +29 -0
  86. data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.html.haml +17 -0
  87. data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.js.haml +10 -0
  88. data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.rb +58 -0
  89. data/lib/ruby_app/elements/navigation/breadcrumbs.rb +22 -0
  90. data/lib/ruby_app/elements/navigation/page_link.html.haml +9 -0
  91. data/lib/ruby_app/elements/navigation/page_link.js.haml +10 -0
  92. data/lib/ruby_app/elements/navigation/page_link.rb +56 -0
  93. data/lib/ruby_app/elements/navigation/page_menu.html.haml +12 -0
  94. data/lib/ruby_app/elements/navigation/page_menu.js.haml +10 -0
  95. data/lib/ruby_app/elements/navigation/page_menu.rb +57 -0
  96. data/lib/ruby_app/elements/page.rb +21 -0
  97. data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.css.haml +2 -0
  98. data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.js.haml +2 -0
  99. data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.rb +77 -0
  100. data/lib/ruby_app/elements/pages/authentication/open_id/ax_authentication_page.rb +52 -0
  101. data/lib/ruby_app/elements/pages/authentication/open_id/google_authentication_page.rb +30 -0
  102. data/lib/ruby_app/elements/pages/authentication/open_id/my_open_id_authentication_page.rb +30 -0
  103. data/lib/ruby_app/elements/pages/authentication/open_id/sreg_authentication_page.rb +52 -0
  104. data/lib/ruby_app/elements/pages/authentication/open_id/yahoo_authentication_page.rb +30 -0
  105. data/lib/ruby_app/elements/pages/base/base_blank_page.css.haml +18 -0
  106. data/lib/ruby_app/elements/pages/base/base_blank_page.html.haml +11 -0
  107. data/lib/ruby_app/elements/pages/base/base_blank_page.js.haml +3 -0
  108. data/lib/ruby_app/elements/pages/base/base_blank_page.rb +36 -0
  109. data/lib/ruby_app/elements/pages/blank_page.rb +22 -0
  110. data/lib/ruby_app/elements/pages/default_page.css.haml +2 -0
  111. data/lib/ruby_app/elements/pages/default_page.html.haml +5 -0
  112. data/lib/ruby_app/elements/pages/default_page.js.haml +2 -0
  113. data/lib/ruby_app/elements/pages/default_page.rb +34 -0
  114. data/lib/ruby_app/elements/pages/exception_page.html.haml +8 -0
  115. data/lib/ruby_app/elements/pages/exception_page.rb +23 -0
  116. data/lib/ruby_app/elements/pages/quit_page.html.haml +5 -0
  117. data/lib/ruby_app/elements/pages/quit_page.rb +24 -0
  118. data/lib/ruby_app/elements/pages/settings_page.css.haml +2 -0
  119. data/lib/ruby_app/elements/pages/settings_page.html.haml +5 -0
  120. data/lib/ruby_app/elements/pages/settings_page.js.haml +2 -0
  121. data/lib/ruby_app/elements/pages/settings_page.rb +37 -0
  122. data/lib/ruby_app/elements/pages/test_pages/default_test_page.css.haml +4 -0
  123. data/lib/ruby_app/elements/pages/test_pages/default_test_page.html.haml +5 -0
  124. data/lib/ruby_app/elements/pages/test_pages/default_test_page.js.haml +4 -0
  125. data/lib/ruby_app/elements/pages/test_pages/default_test_page.rb +55 -0
  126. data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.css.haml +7 -0
  127. data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.html.haml +5 -0
  128. data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.js.haml +7 -0
  129. data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.rb +66 -0
  130. data/lib/ruby_app/elements/pages/test_pages/input_test_page.css.haml +4 -0
  131. data/lib/ruby_app/elements/pages/test_pages/input_test_page.html.haml +9 -0
  132. data/lib/ruby_app/elements/pages/test_pages/input_test_page.js.haml +4 -0
  133. data/lib/ruby_app/elements/pages/test_pages/input_test_page.rb +44 -0
  134. data/lib/ruby_app/elements/pages/test_pages/list_test_page.css.haml +4 -0
  135. data/lib/ruby_app/elements/pages/test_pages/list_test_page.html.haml +6 -0
  136. data/lib/ruby_app/elements/pages/test_pages/list_test_page.js.haml +4 -0
  137. data/lib/ruby_app/elements/pages/test_pages/list_test_page.rb +51 -0
  138. data/lib/ruby_app/language.rb +44 -0
  139. data/lib/ruby_app/log.rb +33 -0
  140. data/lib/ruby_app/mixins/configuration.rb +31 -0
  141. data/lib/ruby_app/mixins/delegate.rb +15 -0
  142. data/lib/ruby_app/mixins/hash.rb +19 -0
  143. data/lib/ruby_app/mixins/render.rb +76 -0
  144. data/lib/ruby_app/mixins/route.rb +39 -0
  145. data/lib/ruby_app/mixins/template.rb +38 -0
  146. data/lib/ruby_app/mixins/translate.rb +35 -0
  147. data/lib/ruby_app/rack/application.rb +24 -0
  148. data/lib/ruby_app/rack/route.rb +128 -0
  149. data/lib/ruby_app/request.rb +54 -0
  150. data/lib/ruby_app/resources/elements/dialogs/base/base_busy_dialog.gif +0 -0
  151. data/lib/ruby_app/resources/favicon.ico +0 -0
  152. data/lib/ruby_app/resources/themes/mobile/base/base_page/icon.png +0 -0
  153. data/lib/ruby_app/resources/themes/mobile/base/base_page/icon.psd +0 -0
  154. data/lib/ruby_app/resources/themes/mobile/base/base_page/manifest +0 -0
  155. data/lib/ruby_app/resources/themes/mobile/base/base_page/start.png +0 -0
  156. data/lib/ruby_app/resources/themes/mobile/base/base_page/start.psd +0 -0
  157. data/lib/ruby_app/resources/themes/mobile/lists/select.png +0 -0
  158. data/lib/ruby_app/resources/themes/mobile/lists/select.psd +0 -0
  159. data/lib/ruby_app/session.rb +101 -0
  160. data/lib/ruby_app/templates/application/Gemfile +3 -0
  161. data/lib/ruby_app/templates/application/config.ru +42 -0
  162. data/lib/ruby_app/templates/application/config.yml +1 -0
  163. data/lib/ruby_app/templates/application/console.rb +16 -0
  164. data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/application.rb +16 -0
  165. data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.css.haml +9 -0
  166. data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.html.haml +7 -0
  167. data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.rb +26 -0
  168. data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/session.rb +17 -0
  169. data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/version.rb +4 -0
  170. data/lib/ruby_app/templates/application/spec/spec_helper.rb +1 -0
  171. data/lib/ruby_app/templates/application/spec/support/shared.rb +18 -0
  172. data/lib/ruby_app/templates/application/translations/en.yml +5 -0
  173. data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.css.haml +3 -0
  174. data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.html.haml +4 -0
  175. data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.js.haml +3 -0
  176. data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.rb +14 -0
  177. data/lib/ruby_app/themes/mobile.rb +37 -0
  178. data/lib/ruby_app/themes/mobile/base/base_page.html.haml +30 -0
  179. data/lib/ruby_app/themes/mobile/calendars/month.css.haml +21 -0
  180. data/lib/ruby_app/themes/mobile/colors.sass +24 -0
  181. data/lib/ruby_app/themes/mobile/dialog.css.haml +17 -0
  182. data/lib/ruby_app/themes/mobile/dialogs/blank_dialog.css.haml +12 -0
  183. data/lib/ruby_app/themes/mobile/dialogs/busy_dialog.css.haml +9 -0
  184. data/lib/ruby_app/themes/mobile/dialogs/close_dialog.css.haml +12 -0
  185. data/lib/ruby_app/themes/mobile/dialogs/yes_no_dialog.css.haml +14 -0
  186. data/lib/ruby_app/themes/mobile/list.css.haml +25 -0
  187. data/lib/ruby_app/themes/mobile/lists/select.css.haml +27 -0
  188. data/lib/ruby_app/themes/mobile/markdown.css.haml +11 -0
  189. data/lib/ruby_app/themes/mobile/navigation/base/base_breadcrumbs.html.haml +7 -0
  190. data/lib/ruby_app/themes/mobile/page.css.haml +18 -0
  191. data/lib/ruby_app/themes/mobile/pages/base/base_blank_page.css.haml +18 -0
  192. data/lib/ruby_app/themes/mobile/pages/base/base_blank_page.html.haml +13 -0
  193. data/lib/ruby_app/themes/mobile/pages/blank_page.css.haml +19 -0
  194. data/lib/ruby_app/translations/en.yml +125 -0
  195. data/lib/ruby_app/version.rb +4 -0
  196. data/rakefile +62 -0
  197. data/ruby_app.gemspec +40 -0
  198. data/spec/element_spec.rb +22 -0
  199. data/spec/elements/navigation/breadcrumbs_spec.rb +69 -0
  200. data/spec/elements/page_spec.rb +31 -0
  201. data/spec/mixins/render_spec.rb +182 -0
  202. data/spec/mixins/route_spec.rb +60 -0
  203. data/spec/mixins/template_spec.rb +78 -0
  204. data/spec/mixins/test_a.css.haml +3 -0
  205. data/spec/mixins/test_a.html.haml +3 -0
  206. data/spec/mixins/test_a.js.haml +3 -0
  207. data/spec/mixins/test_b.css.haml +4 -0
  208. data/spec/mixins/test_b.html.haml +3 -0
  209. data/spec/mixins/test_b.js.haml +4 -0
  210. data/spec/mixins/test_c.css.haml +4 -0
  211. data/spec/mixins/test_c.html.haml +2 -0
  212. data/spec/mixins/test_c.js.haml +4 -0
  213. data/spec/mixins/test_e.html.haml +2 -0
  214. data/spec/mixins/test_f.html.haml +2 -0
  215. data/spec/mixins/test_g.css.haml +4 -0
  216. data/spec/spec_helper.rb +1 -0
  217. data/spec/support/shared.rb +15 -0
  218. metadata +654 -0
@@ -0,0 +1,13 @@
1
+ *.gem
2
+ .bundle
3
+ .DS_Store
4
+ .idea
5
+ .sass-cache
6
+ chromedriver.log
7
+ Gemfile.lock
8
+ rack.pid
9
+ lib/ruby_app/elements/pages/authentication/open_id/associations
10
+ lib/ruby_app/elements/pages/authentication/open_id/nonces
11
+ lib/ruby_app/elements/pages/authentication/open_id/temp
12
+ log
13
+ sandbox
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm ruby-1.8.7-p352@RubyApp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in ruby_app.gemspec
4
+ gemspec
File without changes
@@ -0,0 +1,8 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'ruby_app/application'
5
+
6
+ puts "Running #{__FILE__.inspect}"
7
+
8
+ RubyApp::Application.create
@@ -0,0 +1,168 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'bundler/setup'
4
+
5
+ require 'fileutils'
6
+ require 'rack'
7
+ require 'term/ansicolor'
8
+
9
+ require 'ruby_app'
10
+ require 'yaml'
11
+
12
+ extend Term::ANSIColor
13
+
14
+ def usage
15
+ <<-USAGE
16
+ usage: ruby_app <command> <arguments>
17
+
18
+ Available commands include:
19
+ create application Create a basic application in the current folder named <arguments>.
20
+ create page DISABLED: Create a baisc page consisting of .rb, .html, .css. and .js files (not implemented)
21
+ console Open an interactive console
22
+ run Run the application identified by the config.ru in <arguments>
23
+
24
+ USAGE
25
+ end
26
+
27
+ def create_folder(destination, replacements = [])
28
+ _destination = destination
29
+ replacements.each do |replacement|
30
+ _destination = _destination.gsub(replacement[:pattern], replacement[:text])
31
+ end
32
+ unless File.exists?(File.dirname(_destination))
33
+ create_folder(File.dirname(_destination))
34
+ end
35
+ unless File.exists?(_destination)
36
+ action = :created
37
+ FileUtils.mkdir(_destination)
38
+ else
39
+ action = :skipped
40
+ end
41
+ puts "#{_destination.sub(FileUtils.pwd, '.')} ... #{bold}#{action}#{clear}"
42
+ end
43
+
44
+ def copy_file(source, destination, replacements = [])
45
+ _destination = File.join(destination, File.basename(source))
46
+ replacements.each do |replacement|
47
+ _destination = _destination.gsub(replacement[:pattern], replacement[:text])
48
+ end
49
+ action = nil
50
+ if File.exists?(_destination)
51
+ if File.mtime(source) > File.mtime(_destination)
52
+ action = :replaced
53
+ else
54
+ action = :skipped
55
+ end
56
+ else
57
+ action = :created
58
+ end
59
+ unless action == :skipped
60
+ FileUtils.mv(_destination, "#{_destination}.replaced", :force => true) if action == :replaced
61
+ FileUtils.cp(source, File.dirname(_destination))
62
+ FileUtils.mv(File.join(File.dirname(_destination), File.basename(source)), _destination) unless File.join(File.dirname(_destination), File.basename(source)) == _destination
63
+ replacements.each do |replacement|
64
+ system "sed 's/#{replacement[:pattern].source}/#{replacement[:text]}/' < '#{_destination}' > '#{_destination}.out'"
65
+ FileUtils.rm(_destination)
66
+ FileUtils.mv("#{_destination}.out", _destination)
67
+ end
68
+ end
69
+ puts "#{_destination.sub(FileUtils.pwd, '.')} ... #{bold}#{action}#{clear}"
70
+ end
71
+
72
+ def copy_folder(source, destination, replacements = [])
73
+ create_folder(destination, replacements)
74
+ Dir.new(source).each do |item|
75
+ unless item.start_with?('.')
76
+ if File.directory?(File.join(source, item))
77
+ copy_folder(File.join(source, item), File.join(destination, File.basename(item)), replacements)
78
+ else
79
+ copy_file(File.join(source, item), destination, replacements)
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+ def create_application
86
+ argument = $*[2]
87
+ _class = upcode(argument)
88
+ folder = downcode(argument)
89
+ full_folder = File.join(FileUtils.pwd, downcode(argument))
90
+ replacements = [
91
+ {
92
+ :pattern => /_APPLICATION_DOWNCODE_/,
93
+ :text => folder
94
+ },
95
+ {
96
+ :pattern => /_APPLICATION_UPCODE_/,
97
+ :text => _class
98
+ }
99
+ ]
100
+ source = File.join(File.dirname(__FILE__), %w[.. lib ruby_app templates application])
101
+ copy_folder(source, full_folder, replacements)
102
+ end
103
+
104
+ #def create_page
105
+ # argument = $*[2]
106
+ # folder = File.dirname(File.join(File.join(FileUtils.pwd, %w[elements arguments]), downcode(argument).split('/')))
107
+ # namespace_class = "#{upcode(File.basename(FileUtils.pwd))}::Elements::Pages::#{upcode(argument)}"
108
+ # _class = namespace_class.split('::').last
109
+ # replacements = [
110
+ # {
111
+ # :pattern => /_PAGE_DOWNCODE_/,
112
+ # :text => downcode(_class)
113
+ # },
114
+ # {
115
+ # :pattern => /_PAGE_UPCODE_/,
116
+ # :text => _class
117
+ # }
118
+ # ]
119
+ # source = File.join(File.dirname(__FILE__), %w[.. lib ruby_app templates argument])
120
+ # copy_folder(source, folder, replacements)
121
+ #end
122
+
123
+ def console
124
+ argument = $*[1]
125
+ system("irb --back-trace-limit 100 -r #{argument || ( File.exists?(File.join(FileUtils.pwd, %w[console.rb])) ? File.join(FileUtils.pwd, %w[console.rb]) : File.join(File.dirname(__FILE__), %w[console.rb]) )}")
126
+ end
127
+
128
+ def run
129
+ argument = $*[1]
130
+ Rack::Server.start(:config => argument || File.join(FileUtils.pwd, %w[config.ru]))
131
+ end
132
+
133
+ def downcode(value)
134
+ value = value.gsub(/::/, '/')
135
+ value = value.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
136
+ value = value.gsub(/([a-z\d])([A-Z])/,'\1_\2')
137
+ value = value.tr("-", "_")
138
+ value.downcase
139
+ end
140
+
141
+ def upcode(value)
142
+ value = value.gsub(/\/(.?)/) { "::#{$1.upcase}" }
143
+ value.gsub(/(?:^|_)(.)/) { $1.upcase }
144
+ end
145
+
146
+ unless $*[0]
147
+ puts usage
148
+ else
149
+ case $*[0].downcase
150
+ when 'create'
151
+ case $*[1].downcase
152
+ when 'application'
153
+ create_application
154
+ # when 'page'
155
+ # create_page
156
+ else
157
+ puts "Blank or unrecognized command '#{$*[1].downcase}'"
158
+ puts usage
159
+ end
160
+ when 'console'
161
+ console
162
+ when 'run'
163
+ run
164
+ else
165
+ puts "Blank or unrecognized command '#{$*[0].downcase}'"
166
+ puts usage
167
+ end
168
+ end
@@ -0,0 +1,11 @@
1
+ Feature: Interact with the breadcrumbs
2
+
3
+ @broken
4
+ Scenario: View the breadcrumbs test page
5
+ Given I go to the test pages
6
+ When I click "Breadcrumbs Test Page"
7
+ Then I should see "Add"
8
+ When I click "Add"
9
+ And I click "Breadcrumbs Test Page"
10
+ Then I should see "Add"
11
+ And I quit
@@ -0,0 +1,16 @@
1
+ Feature: Clicking a link in content
2
+
3
+ @broken
4
+ Scenario: Clicking a link in content
5
+ Given I go to the test pages
6
+ When I click "Content Test Page"
7
+ Then I should see "Click this one to go somewhere and this other one to go somewhere else."
8
+ When I click "this one"
9
+ Then I should see "You selected ..."
10
+ And I should see "google"
11
+ When I click "Close"
12
+ And I click "this other one"
13
+ Then I should see "You selected ..."
14
+ And I should see "yahoo"
15
+ When I click "Close"
16
+ And I quit
@@ -0,0 +1,5 @@
1
+ Feature: Default Page
2
+
3
+ Scenario: View the default page
4
+ Given I am viewing "/en"
5
+ Then I should see "This is the default start page"
@@ -0,0 +1,56 @@
1
+ Feature: Dialog Test Page
2
+
3
+ @broken
4
+ Scenario: Show a busy dialog
5
+ Given I go to the test pages
6
+ Then I should see "DialogTestPage"
7
+ When I click "DialogTestPage"
8
+ Then I should see "BusyDialog"
9
+ When I click "BusyDialog"
10
+ Then I should see "Busy dialog"
11
+ When I wait 30 seconds
12
+ Then I should not see "Busy dialog"
13
+ Then I quit
14
+
15
+ Scenario: Show an exception dialog
16
+ Given I go to the test pages
17
+ Then I should see "DialogTestPage"
18
+ When I click "DialogTestPage"
19
+ Then I should see "ExceptionDialog"
20
+ When I click "ExceptionDialog"
21
+ Then I should see "RuntimeError"
22
+ And I should see "Exception dialog"
23
+ When I click "Close"
24
+ Then I should not see "RuntimeError"
25
+ And I should not see "Exception dialog"
26
+ Then I quit
27
+
28
+ Scenario: Show a message dialog
29
+ Given I go to the test pages
30
+ Then I should see "DialogTestPage"
31
+ When I click "DialogTestPage"
32
+ Then I should see "MessageDialog"
33
+ When I click "MessageDialog"
34
+ Then I should see "Message Dialog"
35
+ And I should see "This is a Message Dialog"
36
+ When I click "Close"
37
+ Then I should not see "Message Dialog"
38
+ And I should not see "This is a Message Dialog"
39
+ Then I quit
40
+
41
+ Scenario: Show a calendar month dialog
42
+ Given I go to the test pages
43
+ Then I should see "DialogTestPage"
44
+ When I click "DialogTestPage"
45
+ Then I should see "MonthDialog"
46
+ When I click "MonthDialog"
47
+ Then I should see "Wed"
48
+ When I click "15"
49
+ Then I should not see "Wed"
50
+ And I should see "You selected"
51
+ And I should see "15/"
52
+ When I click "Close"
53
+ Then I should not see "You selected"
54
+ And I should not see "15/"
55
+ And I should see "-15"
56
+ Then I quit
@@ -0,0 +1,53 @@
1
+ Feature: View a variety of exception handling pages
2
+
3
+ @broken
4
+ Scenario: View the exception test page
5
+ Given I go to the test pages
6
+ When I click "Exception Test Page"
7
+ Then I should see "Displayed 1 times"
8
+ When I refresh the page
9
+ Then I should see "Displayed 2 times"
10
+ When I refresh the page
11
+ Then I should see "Displayed 3 times"
12
+ When I refresh the page
13
+ Then I should see "Displayed 4 times"
14
+ When I refresh the page
15
+ Then I should see "Displayed 5 times"
16
+ When I refresh the page
17
+ Then I should see "RuntimeError"
18
+ And I should see "Displayed more than 5 times"
19
+ When I refresh the page
20
+ And I refresh the page
21
+ Then I should see "Displayed 2 times"
22
+ And I quit
23
+
24
+ @broken
25
+ Scenario: View the update exception test page
26
+ Given I go to the test pages
27
+ When I click "Exception Test Page"
28
+ Then I should see "Updated 1 times"
29
+ When I click "Update"
30
+ Then I should see "Updated 2 times"
31
+ When I click "Update"
32
+ Then I should see "Updated 3 times"
33
+ When I click "Update"
34
+ Then I should see "Updated 4 times"
35
+ When I click "Update"
36
+ Then I should see "Updated 5 times"
37
+ When I click "Update"
38
+ Then I should see "RuntimeError"
39
+ And I should see "Updated more than 5 times"
40
+ When I refresh the page
41
+ Then I should see "Updated 1 times"
42
+ And I quit
43
+
44
+ @broken
45
+ Scenario: View the dialog exception test page
46
+ Given I go to the test pages
47
+ When I click "Exception Test Page"
48
+ Then I should see "Show dialog"
49
+ When I click "Show dialog"
50
+ Then I should see "Dialog exception"
51
+ When I click "Close"
52
+ Then I should not see "Dialog exception"
53
+ And I quit
@@ -0,0 +1,13 @@
1
+ Feature: View a variety of input elements
2
+
3
+ @broken
4
+ Scenario: View the text input element
5
+ Given I go to the test pages
6
+ When I click "Input Test Page"
7
+ Then I should see "Enter some text below"
8
+ And I fill in "Text:" with "Some value" and I press enter
9
+ Then I should see "You entered ..."
10
+ And I should see "Some value"
11
+ When I click "Close"
12
+ Then I should not see "You entered ..."
13
+ And I quit
@@ -0,0 +1,12 @@
1
+ Feature: List Test Page
2
+
3
+ Scenario: Select an item from a list
4
+ Given I go to the test pages
5
+ Then I should see "ListTestPage"
6
+ When I click "ListTestPage"
7
+ Then I should see "Item 06"
8
+ When I click "Item 06"
9
+ And I should see "You selected the item 'Item 06'"
10
+ When I click "Close"
11
+ And I should not see "You selected the item 'Item 06'"
12
+ Then I quit
@@ -0,0 +1,14 @@
1
+ Feature: Month Calendar Test Page
2
+
3
+ @broken
4
+ Scenario: Select a date
5
+ Given I go to the test pages
6
+ Then I should see "Monthly Calendar Test Page"
7
+ When I click "Monthly Calendar Test Page"
8
+ Then I should see "Change the month displayed to January 2000"
9
+ When I click "January 2000"
10
+ And I click "19"
11
+ Then I should see "19/01/2000"
12
+ When I click "Close"
13
+ And I click "back"
14
+ Then I quit
@@ -0,0 +1,16 @@
1
+ Given /^I go to the test pages$/ do
2
+ steps %Q{
3
+ Given I am viewing "/en"
4
+ Then I should see "Click here to go to the test pages"
5
+ Then I click "here"
6
+ }
7
+ end
8
+
9
+ Then /^I quit$/ do
10
+ steps %Q{
11
+ When I click "Settings"
12
+ Then I should see "Quit the session"
13
+ When I click "Quit"
14
+ Then I should see "Click here to go to the test pages"
15
+ }
16
+ end
@@ -0,0 +1,36 @@
1
+ Given /^I am viewing "([^"]*)"$/ do |url|
2
+ visit(url)
3
+ end
4
+
5
+ When /^I refresh the page$/ do
6
+ visit(current_path)
7
+ end
8
+
9
+ Then /^I should (not )?see "([^"]*)"$/ do |negative, text|
10
+ unless negative
11
+ page.should have_content(text)
12
+ else
13
+ page.should_not have_content(text)
14
+ end
15
+ end
16
+
17
+ When /^I click "([^"]*)"$/ do |text|
18
+ click_on(text)
19
+ sleep 1
20
+ end
21
+
22
+ When /^I fill in "([^"]*)" with "([^"]*)"( and I press enter)?$/ do |field, value, enter|
23
+ fill_in(field, :with => value)
24
+ if enter
25
+ find_field(field).native.send_key(:enter)
26
+ sleep 1
27
+ end
28
+ end
29
+
30
+ Then /^show me the page$/ do
31
+ save_and_open_page
32
+ end
33
+
34
+ When /^I wait (\d+) seconds$/ do |interval|
35
+ sleep(interval.to_f)
36
+ end