RubyApp 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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