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.
- data/.gitignore +13 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/README.md +0 -0
- data/bin/console.rb +8 -0
- data/bin/ruby_app +168 -0
- data/features/breadcrumbs.feature +11 -0
- data/features/content.feature +16 -0
- data/features/default.feature +5 -0
- data/features/dialog.feature +56 -0
- data/features/exception.feature +53 -0
- data/features/input.feature +13 -0
- data/features/list.feature +12 -0
- data/features/month.feature +14 -0
- data/features/step_definitions/default_macros.rb +16 -0
- data/features/step_definitions/default_steps.rb +36 -0
- data/features/support/env.rb +12 -0
- data/lib/ruby_app.rb +1 -0
- data/lib/ruby_app/application.rb +72 -0
- data/lib/ruby_app/config.ru +27 -0
- data/lib/ruby_app/config.yml +15 -0
- data/lib/ruby_app/configuration.rb +44 -0
- data/lib/ruby_app/element.rb +120 -0
- data/lib/ruby_app/elements/base/base_dialog.css.haml +9 -0
- data/lib/ruby_app/elements/base/base_dialog.html.haml +4 -0
- data/lib/ruby_app/elements/base/base_dialog.rb +64 -0
- data/lib/ruby_app/elements/base/base_page.css.haml +13 -0
- data/lib/ruby_app/elements/base/base_page.html.haml +20 -0
- data/lib/ruby_app/elements/base/base_page.js.haml +97 -0
- data/lib/ruby_app/elements/base/base_page.rb +80 -0
- data/lib/ruby_app/elements/button.html.haml +4 -0
- data/lib/ruby_app/elements/button.rb +19 -0
- data/lib/ruby_app/elements/calendars/base/base_month.css.haml +10 -0
- data/lib/ruby_app/elements/calendars/base/base_month.html.haml +42 -0
- data/lib/ruby_app/elements/calendars/base/base_month.js.haml +18 -0
- data/lib/ruby_app/elements/calendars/base/base_month.rb +101 -0
- data/lib/ruby_app/elements/calendars/month.rb +27 -0
- data/lib/ruby_app/elements/click.js.haml +10 -0
- data/lib/ruby_app/elements/click.rb +44 -0
- data/lib/ruby_app/elements/dialog.rb +23 -0
- data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.css.haml +9 -0
- data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.html.haml +7 -0
- data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.rb +27 -0
- data/lib/ruby_app/elements/dialogs/base/base_close_dialog.css.haml +11 -0
- data/lib/ruby_app/elements/dialogs/base/base_close_dialog.html.haml +6 -0
- data/lib/ruby_app/elements/dialogs/base/base_close_dialog.js.haml +2 -0
- data/lib/ruby_app/elements/dialogs/base/base_close_dialog.rb +33 -0
- data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.css.haml +15 -0
- data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.html.haml +8 -0
- data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.js.haml +2 -0
- data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.rb +40 -0
- data/lib/ruby_app/elements/dialogs/blank_dialog.html.haml +9 -0
- data/lib/ruby_app/elements/dialogs/blank_dialog.rb +22 -0
- data/lib/ruby_app/elements/dialogs/busy_dialog.rb +22 -0
- data/lib/ruby_app/elements/dialogs/calendars/month_dialog.css.haml +19 -0
- data/lib/ruby_app/elements/dialogs/calendars/month_dialog.html.haml +18 -0
- data/lib/ruby_app/elements/dialogs/calendars/month_dialog.js.haml +3 -0
- data/lib/ruby_app/elements/dialogs/calendars/month_dialog.rb +52 -0
- data/lib/ruby_app/elements/dialogs/close_dialog.rb +22 -0
- data/lib/ruby_app/elements/dialogs/confirmation_dialog.html.haml +8 -0
- data/lib/ruby_app/elements/dialogs/confirmation_dialog.rb +26 -0
- data/lib/ruby_app/elements/dialogs/exception_dialog.html.haml +8 -0
- data/lib/ruby_app/elements/dialogs/exception_dialog.rb +23 -0
- data/lib/ruby_app/elements/dialogs/message_dialog.html.haml +8 -0
- data/lib/ruby_app/elements/dialogs/message_dialog.rb +26 -0
- data/lib/ruby_app/elements/dialogs/yes_no_dialog.rb +22 -0
- data/lib/ruby_app/elements/exception_element.html.haml +7 -0
- data/lib/ruby_app/elements/exception_element.rb +19 -0
- data/lib/ruby_app/elements/input.html.haml +3 -0
- data/lib/ruby_app/elements/input.js.haml +9 -0
- data/lib/ruby_app/elements/input.rb +54 -0
- data/lib/ruby_app/elements/inputs/duration_input.rb +46 -0
- data/lib/ruby_app/elements/link.html.haml +4 -0
- data/lib/ruby_app/elements/link.rb +19 -0
- data/lib/ruby_app/elements/list.html.haml +9 -0
- data/lib/ruby_app/elements/list.js.haml +10 -0
- data/lib/ruby_app/elements/list.rb +55 -0
- data/lib/ruby_app/elements/lists/select.html.haml +14 -0
- data/lib/ruby_app/elements/lists/select.js.haml +10 -0
- data/lib/ruby_app/elements/lists/select.rb +47 -0
- data/lib/ruby_app/elements/markdown.html.haml +5 -0
- data/lib/ruby_app/elements/markdown.js.haml +10 -0
- data/lib/ruby_app/elements/markdown.rb +51 -0
- data/lib/ruby_app/elements/navigation/back_button.html.haml +2 -0
- data/lib/ruby_app/elements/navigation/back_button.rb +29 -0
- data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.html.haml +17 -0
- data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.js.haml +10 -0
- data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.rb +58 -0
- data/lib/ruby_app/elements/navigation/breadcrumbs.rb +22 -0
- data/lib/ruby_app/elements/navigation/page_link.html.haml +9 -0
- data/lib/ruby_app/elements/navigation/page_link.js.haml +10 -0
- data/lib/ruby_app/elements/navigation/page_link.rb +56 -0
- data/lib/ruby_app/elements/navigation/page_menu.html.haml +12 -0
- data/lib/ruby_app/elements/navigation/page_menu.js.haml +10 -0
- data/lib/ruby_app/elements/navigation/page_menu.rb +57 -0
- data/lib/ruby_app/elements/page.rb +21 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.css.haml +2 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.js.haml +2 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.rb +77 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/ax_authentication_page.rb +52 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/google_authentication_page.rb +30 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/my_open_id_authentication_page.rb +30 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/sreg_authentication_page.rb +52 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/yahoo_authentication_page.rb +30 -0
- data/lib/ruby_app/elements/pages/base/base_blank_page.css.haml +18 -0
- data/lib/ruby_app/elements/pages/base/base_blank_page.html.haml +11 -0
- data/lib/ruby_app/elements/pages/base/base_blank_page.js.haml +3 -0
- data/lib/ruby_app/elements/pages/base/base_blank_page.rb +36 -0
- data/lib/ruby_app/elements/pages/blank_page.rb +22 -0
- data/lib/ruby_app/elements/pages/default_page.css.haml +2 -0
- data/lib/ruby_app/elements/pages/default_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/default_page.js.haml +2 -0
- data/lib/ruby_app/elements/pages/default_page.rb +34 -0
- data/lib/ruby_app/elements/pages/exception_page.html.haml +8 -0
- data/lib/ruby_app/elements/pages/exception_page.rb +23 -0
- data/lib/ruby_app/elements/pages/quit_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/quit_page.rb +24 -0
- data/lib/ruby_app/elements/pages/settings_page.css.haml +2 -0
- data/lib/ruby_app/elements/pages/settings_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/settings_page.js.haml +2 -0
- data/lib/ruby_app/elements/pages/settings_page.rb +37 -0
- data/lib/ruby_app/elements/pages/test_pages/default_test_page.css.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/default_test_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/test_pages/default_test_page.js.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/default_test_page.rb +55 -0
- data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.css.haml +7 -0
- data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.js.haml +7 -0
- data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.rb +66 -0
- data/lib/ruby_app/elements/pages/test_pages/input_test_page.css.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/input_test_page.html.haml +9 -0
- data/lib/ruby_app/elements/pages/test_pages/input_test_page.js.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/input_test_page.rb +44 -0
- data/lib/ruby_app/elements/pages/test_pages/list_test_page.css.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/list_test_page.html.haml +6 -0
- data/lib/ruby_app/elements/pages/test_pages/list_test_page.js.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/list_test_page.rb +51 -0
- data/lib/ruby_app/language.rb +44 -0
- data/lib/ruby_app/log.rb +33 -0
- data/lib/ruby_app/mixins/configuration.rb +31 -0
- data/lib/ruby_app/mixins/delegate.rb +15 -0
- data/lib/ruby_app/mixins/hash.rb +19 -0
- data/lib/ruby_app/mixins/render.rb +76 -0
- data/lib/ruby_app/mixins/route.rb +39 -0
- data/lib/ruby_app/mixins/template.rb +38 -0
- data/lib/ruby_app/mixins/translate.rb +35 -0
- data/lib/ruby_app/rack/application.rb +24 -0
- data/lib/ruby_app/rack/route.rb +128 -0
- data/lib/ruby_app/request.rb +54 -0
- data/lib/ruby_app/resources/elements/dialogs/base/base_busy_dialog.gif +0 -0
- data/lib/ruby_app/resources/favicon.ico +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/icon.png +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/icon.psd +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/manifest +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/start.png +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/start.psd +0 -0
- data/lib/ruby_app/resources/themes/mobile/lists/select.png +0 -0
- data/lib/ruby_app/resources/themes/mobile/lists/select.psd +0 -0
- data/lib/ruby_app/session.rb +101 -0
- data/lib/ruby_app/templates/application/Gemfile +3 -0
- data/lib/ruby_app/templates/application/config.ru +42 -0
- data/lib/ruby_app/templates/application/config.yml +1 -0
- data/lib/ruby_app/templates/application/console.rb +16 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/application.rb +16 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.css.haml +9 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.html.haml +7 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.rb +26 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/session.rb +17 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/version.rb +4 -0
- data/lib/ruby_app/templates/application/spec/spec_helper.rb +1 -0
- data/lib/ruby_app/templates/application/spec/support/shared.rb +18 -0
- data/lib/ruby_app/templates/application/translations/en.yml +5 -0
- data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.css.haml +3 -0
- data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.html.haml +4 -0
- data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.js.haml +3 -0
- data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.rb +14 -0
- data/lib/ruby_app/themes/mobile.rb +37 -0
- data/lib/ruby_app/themes/mobile/base/base_page.html.haml +30 -0
- data/lib/ruby_app/themes/mobile/calendars/month.css.haml +21 -0
- data/lib/ruby_app/themes/mobile/colors.sass +24 -0
- data/lib/ruby_app/themes/mobile/dialog.css.haml +17 -0
- data/lib/ruby_app/themes/mobile/dialogs/blank_dialog.css.haml +12 -0
- data/lib/ruby_app/themes/mobile/dialogs/busy_dialog.css.haml +9 -0
- data/lib/ruby_app/themes/mobile/dialogs/close_dialog.css.haml +12 -0
- data/lib/ruby_app/themes/mobile/dialogs/yes_no_dialog.css.haml +14 -0
- data/lib/ruby_app/themes/mobile/list.css.haml +25 -0
- data/lib/ruby_app/themes/mobile/lists/select.css.haml +27 -0
- data/lib/ruby_app/themes/mobile/markdown.css.haml +11 -0
- data/lib/ruby_app/themes/mobile/navigation/base/base_breadcrumbs.html.haml +7 -0
- data/lib/ruby_app/themes/mobile/page.css.haml +18 -0
- data/lib/ruby_app/themes/mobile/pages/base/base_blank_page.css.haml +18 -0
- data/lib/ruby_app/themes/mobile/pages/base/base_blank_page.html.haml +13 -0
- data/lib/ruby_app/themes/mobile/pages/blank_page.css.haml +19 -0
- data/lib/ruby_app/translations/en.yml +125 -0
- data/lib/ruby_app/version.rb +4 -0
- data/rakefile +62 -0
- data/ruby_app.gemspec +40 -0
- data/spec/element_spec.rb +22 -0
- data/spec/elements/navigation/breadcrumbs_spec.rb +69 -0
- data/spec/elements/page_spec.rb +31 -0
- data/spec/mixins/render_spec.rb +182 -0
- data/spec/mixins/route_spec.rb +60 -0
- data/spec/mixins/template_spec.rb +78 -0
- data/spec/mixins/test_a.css.haml +3 -0
- data/spec/mixins/test_a.html.haml +3 -0
- data/spec/mixins/test_a.js.haml +3 -0
- data/spec/mixins/test_b.css.haml +4 -0
- data/spec/mixins/test_b.html.haml +3 -0
- data/spec/mixins/test_b.js.haml +4 -0
- data/spec/mixins/test_c.css.haml +4 -0
- data/spec/mixins/test_c.html.haml +2 -0
- data/spec/mixins/test_c.js.haml +4 -0
- data/spec/mixins/test_e.html.haml +2 -0
- data/spec/mixins/test_f.html.haml +2 -0
- data/spec/mixins/test_g.css.haml +4 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/shared.rb +15 -0
- metadata +654 -0
data/.gitignore
ADDED
@@ -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
data/README.md
ADDED
File without changes
|
data/bin/console.rb
ADDED
data/bin/ruby_app
ADDED
@@ -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,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
|