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/rakefile
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
require 'bundler/setup'
|
4
|
+
|
5
|
+
require 'rake'
|
6
|
+
|
7
|
+
namespace :ruby_app do
|
8
|
+
|
9
|
+
desc 'Monitor RubyApp'
|
10
|
+
task :monitor do |task|
|
11
|
+
system("cd ./lib/ruby_app; > ./log/application.log; clear; tail -f ./log/application.log")
|
12
|
+
end
|
13
|
+
|
14
|
+
desc 'Create RubyApp console'
|
15
|
+
task :console do |task|
|
16
|
+
system("cd ./lib/ruby_app; clear; bundle exec ../../bin/ruby_app console")
|
17
|
+
end
|
18
|
+
|
19
|
+
desc 'Run RubyApp'
|
20
|
+
task :run do |task|
|
21
|
+
system("cd ./lib/ruby_app; clear; bundle exec ../../bin/ruby_app run")
|
22
|
+
end
|
23
|
+
|
24
|
+
namespace :clear do
|
25
|
+
|
26
|
+
desc 'Clear OpenID files'
|
27
|
+
task :open_id do |task|
|
28
|
+
system("rm -rf ./lib/ruby_app/elements/pages/authentication/open_id/associations")
|
29
|
+
system("rm -rf ./lib/ruby_app/elements/pages/authentication/open_id/nonces")
|
30
|
+
system("rm -rf ./lib/ruby_app/elements/pages/authentication/open_id/temp")
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
namespace :test do
|
36
|
+
|
37
|
+
desc 'Run feature tests for the given feature file or all features files if no argument is provided'
|
38
|
+
task :features, :file do |task, arguments|
|
39
|
+
system("bundle exec cucumber --format pretty --tags ~@broken #{arguments.file}")
|
40
|
+
end
|
41
|
+
|
42
|
+
desc 'Run RSpec tests'
|
43
|
+
task :specs, :file, :line do |task, arguments|
|
44
|
+
if arguments.file
|
45
|
+
if arguments.line
|
46
|
+
system("bundle exec rspec #{arguments.file} --line_number=#{arguments.line} --format=documentation --colour")
|
47
|
+
else
|
48
|
+
system("bundle exec rspec #{arguments.file} --format=documentation --colour")
|
49
|
+
end
|
50
|
+
else
|
51
|
+
system("bundle exec rspec spec/ --format=documentation --colour")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
desc 'Run all tests'
|
56
|
+
task :all => ['ruby_app:test:specs',
|
57
|
+
'ruby_app:test:features']
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
data/ruby_app.gemspec
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "ruby_app/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "RubyApp"
|
7
|
+
s.version = RubyApp::VERSION
|
8
|
+
s.authors = ["Frank G. Ficnar"]
|
9
|
+
s.email = ["frank.ficnar@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{A web application framework in Ruby}
|
12
|
+
s.description = %q{A web application framework in Ruby}
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
s.add_dependency 'BlueCloth', '1.0.1'
|
20
|
+
s.add_dependency 'chronic_duration', '0.9.6'
|
21
|
+
s.add_dependency 'facets', '2.9.2'
|
22
|
+
s.add_dependency 'fileutils', '0.7'
|
23
|
+
s.add_dependency 'haml', '3.1.2'
|
24
|
+
s.add_dependency 'json', '1.6.1'
|
25
|
+
s.add_dependency 'mime-types', '1.16'
|
26
|
+
s.add_dependency 'r18n-core', '0.4.9'
|
27
|
+
s.add_dependency 'rack', '1.2.2'
|
28
|
+
s.add_dependency 'ruby-event', '1.0.0'
|
29
|
+
s.add_dependency 'ruby-openid', '2.1.8'
|
30
|
+
s.add_dependency 'sass', '3.1.7'
|
31
|
+
s.add_dependency 'term-ansicolor', '1.0.6'
|
32
|
+
s.add_dependency 'yajl-ruby', '0.8.2'
|
33
|
+
|
34
|
+
s.add_development_dependency 'capybara', '1.0.0'
|
35
|
+
s.add_development_dependency 'cucumber', '1.0.0'
|
36
|
+
s.add_development_dependency 'launchy', '0.3.7'
|
37
|
+
s.add_development_dependency 'rspec', '2.6.0'
|
38
|
+
s.add_development_dependency 'rspec-mocks', '2.6.0'
|
39
|
+
s.add_development_dependency 'ya2yaml', '0.30'
|
40
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'ruby_app/application'
|
4
|
+
require 'ruby_app/element'
|
5
|
+
|
6
|
+
describe RubyApp::Element do
|
7
|
+
include_context 'RubyApp::Elements'
|
8
|
+
|
9
|
+
let(:element) { RubyApp::Element.new }
|
10
|
+
|
11
|
+
describe 'positive' do
|
12
|
+
|
13
|
+
describe 'get element by element_id' do
|
14
|
+
specify { RubyApp::Application.execute(environment) { RubyApp::Element.get_element(element.element_id).should == element } }
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'negative' do
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'ruby_app/application'
|
4
|
+
require 'ruby_app/element'
|
5
|
+
require 'ruby_app/elements/navigation/breadcrumbs'
|
6
|
+
require 'ruby_app/elements/pages/default_page'
|
7
|
+
require 'ruby_app/elements/pages/test_pages/default_test_page'
|
8
|
+
require 'ruby_app/session'
|
9
|
+
|
10
|
+
describe RubyApp::Elements::Navigation::Breadcrumbs do
|
11
|
+
include_context 'RubyApp::Elements'
|
12
|
+
|
13
|
+
describe 'positive' do
|
14
|
+
|
15
|
+
describe 'render class' do
|
16
|
+
|
17
|
+
describe 'render :css' do
|
18
|
+
specify { RubyApp::Application.execute(environment) { RubyApp::Elements::Navigation::Breadcrumbs.render(:css).should be_nil } }
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'render :js' do
|
22
|
+
specify { RubyApp::Application.execute(environment) { RubyApp::Elements::Navigation::Breadcrumbs.render(:js).should_not be_nil } }
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'render instance' do
|
28
|
+
|
29
|
+
let(:breadcrumbs) { RubyApp::Elements::Navigation::Breadcrumbs.new }
|
30
|
+
|
31
|
+
describe 'render :html' do
|
32
|
+
specify { RubyApp::Application.execute(environment) { breadcrumbs.render(:html).should_not be_nil } }
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
describe 'breadcrumb pages' do
|
38
|
+
|
39
|
+
before(:all) do
|
40
|
+
RubyApp::Application.execute(environment) { RubyApp::Session.pages.push(RubyApp::Elements::Pages::TestPages::DefaultTestPage.new) }
|
41
|
+
end
|
42
|
+
|
43
|
+
let(:breadcrumbs) { RubyApp::Elements::Navigation::Breadcrumbs.new }
|
44
|
+
let(:first_page) { RubyApp::Session.pages.first }
|
45
|
+
let(:second_page) { RubyApp::Session.pages.last }
|
46
|
+
|
47
|
+
specify { RubyApp::Application.execute(environment) { breadcrumbs.render(:html).should include(first_page.translate.title) } }
|
48
|
+
specify { RubyApp::Application.execute(environment) { breadcrumbs.render(:html).should include(second_page.translate.title) } }
|
49
|
+
|
50
|
+
describe 'send navigated event' do
|
51
|
+
|
52
|
+
before(:all) do
|
53
|
+
RubyApp::Application.execute(environment) do
|
54
|
+
RubyApp::Session.process(RubyApp::Element::Event.from_hash({ '_class' => 'RubyApp::Elements::Navigation::Base::BaseBreadcrumbs::NavigatedEvent',
|
55
|
+
'source_id' => breadcrumbs.element_id,
|
56
|
+
'page_id' => first_page.element_id }))
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
specify { RubyApp::Application.execute(environment) { RubyApp::Session.pages.length.should == 1 } }
|
61
|
+
specify { RubyApp::Application.execute(environment) { RubyApp::Session.pages.last.should == first_page } }
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'ruby_app/application'
|
4
|
+
require 'ruby_app/elements/page'
|
5
|
+
|
6
|
+
describe RubyApp::Elements::Page do
|
7
|
+
include_context 'RubyApp::Elements'
|
8
|
+
|
9
|
+
describe 'positive' do
|
10
|
+
|
11
|
+
describe 'render instance' do
|
12
|
+
|
13
|
+
let(:page) { RubyApp::Elements::Page.new }
|
14
|
+
|
15
|
+
describe 'render :css' do
|
16
|
+
specify { RubyApp::Application.execute(environment) { page.render(:css).should_not be_nil } }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'render :js' do
|
20
|
+
specify { RubyApp::Application.execute(environment) { page.render(:js).should_not be_nil } }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'render :html' do
|
24
|
+
specify { RubyApp::Application.execute(environment) { page.render(:html).should_not be_nil } }
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,182 @@
|
|
1
|
+
require 'ruby_app/mixins/render'
|
2
|
+
require 'ruby_app/mixins/template'
|
3
|
+
|
4
|
+
describe RubyApp::Mixins::Render do
|
5
|
+
|
6
|
+
before(:all) do
|
7
|
+
|
8
|
+
class TestA
|
9
|
+
extend RubyApp::Mixins::Template
|
10
|
+
extend RubyApp::Mixins::Render
|
11
|
+
include RubyApp::Mixins::Render
|
12
|
+
template_path(:all, File.dirname(__FILE__))
|
13
|
+
end
|
14
|
+
|
15
|
+
class TestB < TestA
|
16
|
+
template_path(:all, File.dirname(__FILE__))
|
17
|
+
end
|
18
|
+
|
19
|
+
class TestC < TestA
|
20
|
+
template_path(:all, File.dirname(__FILE__))
|
21
|
+
exclude_parent_template(:html)
|
22
|
+
end
|
23
|
+
|
24
|
+
class TestD < TestC
|
25
|
+
template_path(:all, File.dirname(__FILE__))
|
26
|
+
end
|
27
|
+
|
28
|
+
class TestE
|
29
|
+
extend RubyApp::Mixins::Template
|
30
|
+
extend RubyApp::Mixins::Render
|
31
|
+
include RubyApp::Mixins::Render
|
32
|
+
template_path(:all, File.dirname(__FILE__))
|
33
|
+
end
|
34
|
+
|
35
|
+
class TestF < TestE
|
36
|
+
template_path(:all, File.dirname(__FILE__))
|
37
|
+
end
|
38
|
+
|
39
|
+
class TestG < TestB
|
40
|
+
template_path(:all, File.dirname(__FILE__))
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
describe 'positive' do
|
46
|
+
|
47
|
+
describe 'render a class' do
|
48
|
+
|
49
|
+
specify { TestA.render(:html).should include('<!-- TestA -->') }
|
50
|
+
specify { TestA.render(:html).scan(/TestA/).length.should == 1 }
|
51
|
+
specify { TestA.render(:css).should include('/* TestA */') }
|
52
|
+
specify { TestA.render(:css).scan(/TestA/).length.should == 1 }
|
53
|
+
specify { TestA.render(:js).should include('// TestA') }
|
54
|
+
specify { TestA.render(:js).scan(/TestA/).length.should == 1 }
|
55
|
+
|
56
|
+
describe 'render an including all derived class' do
|
57
|
+
|
58
|
+
specify { TestB.render(:html).should include('<!-- TestA -->') }
|
59
|
+
specify { TestB.render(:html).should include('<!-- TestB -->') }
|
60
|
+
specify { TestB.render(:css).should include('/* TestA */') }
|
61
|
+
specify { TestB.render(:css).should include('/* TestB */') }
|
62
|
+
specify { TestB.render(:js).should include('// TestA') }
|
63
|
+
specify { TestB.render(:js).should include('// TestB') }
|
64
|
+
|
65
|
+
specify { TestF.render(:html).scan(/TestF/).length.should == 1 }
|
66
|
+
specify { TestF.render(:html).scan(/TestF/).length.should == 1 }
|
67
|
+
specify { TestF.render(:html).scan(/TestF/).length.should == 1 }
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
describe 'render an including some derived class' do
|
72
|
+
|
73
|
+
specify { TestC.render(:html).should include('<!-- TestC -->') }
|
74
|
+
specify { TestC.render(:css).should include('/* TestA */') }
|
75
|
+
specify { TestC.render(:css).should include('/* TestC */') }
|
76
|
+
specify { TestC.render(:js).should include('// TestA') }
|
77
|
+
specify { TestC.render(:js).should include('// TestC') }
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
describe 'render a derived class with no templates' do
|
82
|
+
|
83
|
+
specify { TestD.render(:html).should include('<!-- TestC -->') }
|
84
|
+
specify { TestD.render(:css).should include('/* TestA */') }
|
85
|
+
specify { TestD.render(:css).should include('/* TestC */') }
|
86
|
+
specify { TestD.render(:js).should include('// TestA') }
|
87
|
+
specify { TestD.render(:js).should include('// TestC') }
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
describe 'render a derived class in multiple threads' do
|
92
|
+
|
93
|
+
specify { TestG.render(:css).should include('/* TestA */') }
|
94
|
+
specify { TestG.render(:css).should include('/* TestB */') }
|
95
|
+
specify { TestG.render(:css).should include('/* TestG */') }
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
describe 'render an instance' do
|
102
|
+
|
103
|
+
let(:instance_a) { TestA.new }
|
104
|
+
let(:instance_b) { TestB.new }
|
105
|
+
let(:instance_c) { TestC.new }
|
106
|
+
let(:instance_d) { TestD.new }
|
107
|
+
let(:instance_e) { TestE.new }
|
108
|
+
let(:instance_f) { TestF.new }
|
109
|
+
|
110
|
+
specify { instance_a.render(:html).should include('<!-- TestA -->') }
|
111
|
+
specify { instance_a.render(:html).scan(/TestA/).length.should == 1 }
|
112
|
+
specify { instance_a.render(:css).should include('/* TestA */') }
|
113
|
+
specify { instance_a.render(:css).scan(/TestA/).length.should == 1 }
|
114
|
+
specify { instance_a.render(:js).should include('// TestA') }
|
115
|
+
specify { instance_a.render(:js).scan(/TestA/).length.should == 1 }
|
116
|
+
|
117
|
+
describe 'render an include all derived instance' do
|
118
|
+
|
119
|
+
specify { instance_b.render(:html).should include('<!-- TestA -->') }
|
120
|
+
specify { instance_b.render(:html).should include('<!-- TestB -->') }
|
121
|
+
specify { instance_b.render(:css).should include('/* TestA */') }
|
122
|
+
specify { instance_b.render(:css).should include('/* TestB */') }
|
123
|
+
specify { instance_b.render(:js).should include('// TestA') }
|
124
|
+
specify { instance_b.render(:js).should include('// TestB') }
|
125
|
+
|
126
|
+
specify { instance_f.render(:html).scan(/TestF/).length.should == 1 }
|
127
|
+
specify { instance_f.render(:html).scan(/TestF/).length.should == 1 }
|
128
|
+
specify { instance_f.render(:html).scan(/TestF/).length.should == 1 }
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
describe 'render an include some derived instance' do
|
133
|
+
|
134
|
+
specify { instance_c.render(:html).should include('<!-- TestC -->') }
|
135
|
+
specify { instance_c.render(:css).should include('/* TestA */') }
|
136
|
+
specify { instance_c.render(:css).should include('/* TestC */') }
|
137
|
+
specify { instance_c.render(:js).should include('// TestA') }
|
138
|
+
specify { instance_c.render(:js).should include('// TestC') }
|
139
|
+
|
140
|
+
end
|
141
|
+
|
142
|
+
describe 'render a derived instance with no templates' do
|
143
|
+
|
144
|
+
specify { instance_d.render(:html).should include('<!-- TestC -->') }
|
145
|
+
specify { instance_d.render(:css).should include('/* TestA */') }
|
146
|
+
specify { instance_d.render(:css).should include('/* TestC */') }
|
147
|
+
specify { instance_d.render(:js).should include('// TestA') }
|
148
|
+
specify { instance_d.render(:js).should include('// TestC') }
|
149
|
+
|
150
|
+
end
|
151
|
+
|
152
|
+
end
|
153
|
+
|
154
|
+
end
|
155
|
+
|
156
|
+
describe 'negative' do
|
157
|
+
|
158
|
+
describe 'should not render a class' do
|
159
|
+
|
160
|
+
describe 'should not render an include some derived class' do
|
161
|
+
|
162
|
+
specify { TestC.render(:html).should_not include('<!-- TestA -->') }
|
163
|
+
|
164
|
+
end
|
165
|
+
|
166
|
+
end
|
167
|
+
|
168
|
+
describe 'should not render an instance' do
|
169
|
+
|
170
|
+
let(:instance_c) { TestC.new }
|
171
|
+
|
172
|
+
describe 'should not render an include some derived instance' do
|
173
|
+
|
174
|
+
specify { instance_c.render(:html).should_not include('<!-- TestA -->') }
|
175
|
+
|
176
|
+
end
|
177
|
+
|
178
|
+
end
|
179
|
+
|
180
|
+
end
|
181
|
+
|
182
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'ruby_app/mixins/route'
|
2
|
+
|
3
|
+
describe RubyApp::Mixins::Route do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
Object.extend RubyApp::Mixins::Route
|
7
|
+
end
|
8
|
+
|
9
|
+
before(:each) do
|
10
|
+
@value = false
|
11
|
+
@parameters = nil
|
12
|
+
Object.clear_routes
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'positive' do
|
16
|
+
|
17
|
+
it "should match a blank pattern on GET" do
|
18
|
+
Object.route(RubyApp::Mixins::Route::GET, /^$/) { @value = true }
|
19
|
+
@value.should be_false
|
20
|
+
Object.do_route(RubyApp::Mixins::Route::GET, '')
|
21
|
+
@value.should be_true
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should match a pattern on GET" do
|
25
|
+
Object.route(RubyApp::Mixins::Route::GET, /^pattern$/) { @value = true }
|
26
|
+
@value.should be_false
|
27
|
+
Object.do_route(RubyApp::Mixins::Route::GET, 'pattern')
|
28
|
+
@value.should be_true
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should match a pattern on POST" do
|
32
|
+
Object.route(RubyApp::Mixins::Route::POST, /^pattern$/) { @value = true }
|
33
|
+
@value.should be_false
|
34
|
+
Object.do_route(RubyApp::Mixins::Route::POST, 'pattern')
|
35
|
+
@value.should be_true
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should match a pattern on GET with a parameter" do
|
39
|
+
Object.route(RubyApp::Mixins::Route::GET, /^pattern (.*)$/) { |method, path, parameter| @value, @parameters = true, parameter }
|
40
|
+
@value.should be_false
|
41
|
+
@parameter.should be_nil
|
42
|
+
Object.do_route(RubyApp::Mixins::Route::GET, 'pattern parameter')
|
43
|
+
@value.should be_true
|
44
|
+
@parameters.should == 'parameter'
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
describe 'negative' do
|
50
|
+
|
51
|
+
it "should not match a not matching pattern on GET" do
|
52
|
+
Object.route(RubyApp::Mixins::Route::GET, /^pattern$/) { @value = true }
|
53
|
+
@value.should be_false
|
54
|
+
Object.do_route(RubyApp::Mixins::Route::GET, 'not matching pattern')
|
55
|
+
@value.should be_false
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|