adva-core 0.0.2 → 0.0.3
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/lib/bundler/repository.rb +118 -0
- metadata +68 -317
- data/app/controllers/admin/base_controller.rb +0 -21
- data/app/controllers/admin/pages_controller.rb +0 -7
- data/app/controllers/admin/sections_controller.rb +0 -39
- data/app/controllers/admin/sites_controller.rb +0 -21
- data/app/controllers/articles_controller.rb +0 -3
- data/app/controllers/base_controller.rb +0 -22
- data/app/controllers/installations_controller.rb +0 -28
- data/app/controllers/pages_controller.rb +0 -2
- data/app/controllers/sections_controller.rb +0 -3
- data/app/helpers/form_helper.rb +0 -13
- data/app/helpers/sections_helper.rb +0 -7
- data/app/helpers/url_helper.rb +0 -18
- data/app/models/account.rb +0 -3
- data/app/models/article.rb +0 -2
- data/app/models/content.rb +0 -4
- data/app/models/page.rb +0 -17
- data/app/models/section.rb +0 -59
- data/app/models/site.rb +0 -26
- data/app/views/admin/contents/_menu.html.rb +0 -17
- data/app/views/admin/pages/_menu.html.rb +0 -10
- data/app/views/admin/pages/new.html.rb +0 -19
- data/app/views/admin/pages/show.html.rb +0 -25
- data/app/views/admin/sections/_menu.html.rb +0 -45
- data/app/views/admin/sections/_section.html.rb +0 -7
- data/app/views/admin/sections/_select_type.html.rb +0 -16
- data/app/views/admin/sections/index.html.rb +0 -28
- data/app/views/admin/sites/_menu.html.rb +0 -2
- data/app/views/admin/sites/edit.html.rb +0 -22
- data/app/views/admin/sites/index.html.rb +0 -12
- data/app/views/admin/sites/new.html.rb +0 -39
- data/app/views/admin/sites/show.html.rb +0 -7
- data/app/views/installations/new.html.rb +0 -39
- data/app/views/installations/show.html.rb +0 -9
- data/app/views/layouts/_flash.html.rb +0 -9
- data/app/views/layouts/admin.rb +0 -38
- data/app/views/layouts/admin/_header.rb +0 -48
- data/app/views/layouts/admin/_tabs.html.rb +0 -18
- data/app/views/layouts/admin/_top.rb +0 -58
- data/app/views/layouts/base.rb +0 -58
- data/app/views/layouts/default.rb +0 -45
- data/app/views/layouts/default/_menu.rb +0 -19
- data/app/views/layouts/simple.rb +0 -16
- data/app/views/pages/show.html.rb +0 -7
- data/config/initializers/simple_form.rb +0 -53
- data/config/locales/en.yml +0 -129
- data/config/redirects.rb +0 -8
- data/config/routes.rb +0 -21
- data/lib/adva-core.rb +0 -1
- data/lib/adva.rb +0 -37
- data/lib/adva/active_record/has_options.rb +0 -55
- data/lib/adva/cli.rb +0 -16
- data/lib/adva/controller.rb +0 -7
- data/lib/adva/controller/abstract_actions.rb +0 -87
- data/lib/adva/controller/internal_redirect.rb +0 -26
- data/lib/adva/controller/references.rb +0 -28
- data/lib/adva/core.rb +0 -85
- data/lib/adva/engine.rb +0 -64
- data/lib/adva/engine/sliced_models.rb +0 -35
- data/lib/adva/generators.rb +0 -8
- data/lib/adva/generators/app.rb +0 -121
- data/lib/adva/generators/engine.rb +0 -58
- data/lib/adva/generators/gemfile.rb +0 -50
- data/lib/adva/generators/install.rb +0 -31
- data/lib/adva/generators/templates/app/app_template.rb +0 -3
- data/lib/adva/generators/templates/engine/Gemfile.erb +0 -3
- data/lib/adva/generators/templates/engine/all.rb +0 -1
- data/lib/adva/generators/templates/engine/en.yml.erb +0 -2
- data/lib/adva/generators/templates/engine/engine.rb.erb +0 -11
- data/lib/adva/generators/templates/engine/gemspec.erb +0 -21
- data/lib/adva/generators/templates/engine/migration.rb.erb +0 -11
- data/lib/adva/generators/templates/engine/redirects.rb.erb +0 -3
- data/lib/adva/generators/templates/engine/routes.rb.erb +0 -3
- data/lib/adva/generators/templates/engine/test_helper.rb.erb +0 -3
- data/lib/adva/i18n.rb +0 -73
- data/lib/adva/rack.rb +0 -5
- data/lib/adva/rack/static.rb +0 -50
- data/lib/adva/registry.rb +0 -62
- data/lib/adva/responder.rb +0 -21
- data/lib/adva/responder/redirect.rb +0 -31
- data/lib/adva/routing_filters/section_path.rb +0 -72
- data/lib/adva/routing_filters/section_root.rb +0 -65
- data/lib/adva/tasks/core.rake +0 -9
- data/lib/adva/tasks/core.rb +0 -160
- data/lib/adva/testing.rb +0 -57
- data/lib/adva/testing/engine.rb +0 -37
- data/lib/adva/view.rb +0 -7
- data/lib/adva/view/form.rb +0 -44
- data/lib/adva/view/form/tabs.rb +0 -46
- data/lib/adva/view/helper/i18n.rb +0 -26
- data/lib/adva/view/menu.rb +0 -73
- data/lib/adva/view/menu/admin.rb +0 -100
- data/lib/adva/view/menu/items.rb +0 -26
- data/lib/adva/view/tabs.rb +0 -28
- data/lib/adva_core/version.rb +0 -3
- data/lib/core_ext/rails/action_view/has_many_through_collection_helpers.rb +0 -27
- data/lib/core_ext/rails/active_record/skip_callbacks.rb +0 -51
- data/lib/core_ext/ruby/array/flatten_once.rb +0 -9
- data/lib/core_ext/ruby/kernel/silence_stream.rb +0 -17
- data/lib/core_ext/ruby/module/include_anonymous.rb +0 -36
- data/lib/core_ext/ruby/module/option_reader.rb +0 -9
- data/lib/patches/arel/table_initialization_fixes.rb +0 -68
- data/lib/patches/inherited_resources.rb +0 -34
- data/lib/patches/rails/arel_table_options_fix.rb +0 -13
- data/lib/patches/rails/asset_expansion_multiple_registrations.rb +0 -21
- data/lib/patches/rails/recognize_path_env.rb +0 -43
- data/lib/patches/rails/route_set_to_param.rb +0 -25
- data/lib/patches/rails/sti_associations.rb +0 -17
- data/lib/patches/rails/template_resolver_caching.rb +0 -9
- data/lib/patches/rails/url_for.rb +0 -60
- data/lib/patches/responders/flash_responder.rb +0 -17
- data/lib/patches/simple_form.rb +0 -37
- data/lib/patches/thor/core_ext/hash.rb +0 -7
- data/lib/patches/thor/group/symbolized_options.rb +0 -8
- data/lib/patches/webrat/links-data-method.rb +0 -19
- data/lib/patches/webrat/logger.rb +0 -19
- data/lib/patches/webrat/upload_file.rb +0 -28
- data/lib/testing/assertions.rb +0 -19
- data/lib/testing/factories.rb +0 -30
- data/lib/testing/helpers/global_helpers.rb +0 -9
- data/lib/testing/paths.rb +0 -54
- data/lib/testing/step_definitions/common_steps.rb +0 -279
- data/lib/testing/step_definitions/menu_steps.rb +0 -11
- data/lib/testing/step_definitions/routes_steps.rb +0 -18
- data/lib/testing/step_definitions/transforms.rb +0 -50
- data/lib/testing/step_definitions/webrat_steps.rb +0 -291
- data/lib/testing/step_definitions/within_steps.rb +0 -17
- data/lib/webrat/integrations/rails.rb +0 -33
- data/public/images/adva-core/admin/header_bg.png +0 -0
- data/public/images/adva-core/admin/menu_checkmark.png +0 -0
- data/public/images/adva-core/admin/section_menu_bg.png +0 -0
- data/public/images/adva-core/admin/tab_action_active.png +0 -0
- data/public/images/adva-core/admin/tab_main_active.png +0 -0
- data/public/images/adva-core/admin/tab_sidebar_active.png +0 -0
- data/public/images/adva-core/admin/tab_top_active.png +0 -0
- data/public/images/adva-core/asset_selected.png +0 -0
- data/public/images/adva-core/avatar.gif +0 -0
- data/public/images/adva-core/feed.mini.png +0 -0
- data/public/images/adva-core/filter-bg.png +0 -0
- data/public/images/adva-core/grid.png +0 -0
- data/public/images/adva-core/icons/accept.png +0 -0
- data/public/images/adva-core/icons/add.png +0 -0
- data/public/images/adva-core/icons/arrow_cross.png +0 -0
- data/public/images/adva-core/icons/arrow_cross_2.png +0 -0
- data/public/images/adva-core/icons/arrow_cross_3.png +0 -0
- data/public/images/adva-core/icons/arrow_up_down.png +0 -0
- data/public/images/adva-core/icons/assets/audio.png +0 -0
- data/public/images/adva-core/icons/assets/doc.png +0 -0
- data/public/images/adva-core/icons/assets/pdf.png +0 -0
- data/public/images/adva-core/icons/assets/video.png +0 -0
- data/public/images/adva-core/icons/attach.png +0 -0
- data/public/images/adva-core/icons/bin.png +0 -0
- data/public/images/adva-core/icons/bin_closed.png +0 -0
- data/public/images/adva-core/icons/bin_empty.png +0 -0
- data/public/images/adva-core/icons/bullet_black.png +0 -0
- data/public/images/adva-core/icons/bullet_delete.png +0 -0
- data/public/images/adva-core/icons/bullet_error.png +0 -0
- data/public/images/adva-core/icons/bullet_go.png +0 -0
- data/public/images/adva-core/icons/bullet_red.png +0 -0
- data/public/images/adva-core/icons/bullet_white.png +0 -0
- data/public/images/adva-core/icons/bullet_yellow.png +0 -0
- data/public/images/adva-core/icons/cancel.png +0 -0
- data/public/images/adva-core/icons/comment.gif +0 -0
- data/public/images/adva-core/icons/comment.png +0 -0
- data/public/images/adva-core/icons/comment_add.png +0 -0
- data/public/images/adva-core/icons/comment_blue.gif +0 -0
- data/public/images/adva-core/icons/comment_delete.png +0 -0
- data/public/images/adva-core/icons/comment_edit.png +0 -0
- data/public/images/adva-core/icons/comment_yellow.gif +0 -0
- data/public/images/adva-core/icons/cross.png +0 -0
- data/public/images/adva-core/icons/delete.png +0 -0
- data/public/images/adva-core/icons/eye.png +0 -0
- data/public/images/adva-core/icons/favorites.png +0 -0
- data/public/images/adva-core/icons/help.png +0 -0
- data/public/images/adva-core/icons/hourglass.png +0 -0
- data/public/images/adva-core/icons/icon_attachment.gif +0 -0
- data/public/images/adva-core/icons/icon_padlock.gif +0 -0
- data/public/images/adva-core/icons/link.png +0 -0
- data/public/images/adva-core/icons/lock.png +0 -0
- data/public/images/adva-core/icons/magnifier.png +0 -0
- data/public/images/adva-core/icons/minus.gif +0 -0
- data/public/images/adva-core/icons/page_add.png +0 -0
- data/public/images/adva-core/icons/page_delete.png +0 -0
- data/public/images/adva-core/icons/page_edit.png +0 -0
- data/public/images/adva-core/icons/page_favorites.png +0 -0
- data/public/images/adva-core/icons/page_go.png +0 -0
- data/public/images/adva-core/icons/page_green.png +0 -0
- data/public/images/adva-core/icons/page_red.png +0 -0
- data/public/images/adva-core/icons/page_white_add.png +0 -0
- data/public/images/adva-core/icons/page_white_delete.png +0 -0
- data/public/images/adva-core/icons/page_white_edit.png +0 -0
- data/public/images/adva-core/icons/page_white_go.png +0 -0
- data/public/images/adva-core/icons/page_white_link.png +0 -0
- data/public/images/adva-core/icons/page_white_magnify.png +0 -0
- data/public/images/adva-core/icons/pencil.png +0 -0
- data/public/images/adva-core/icons/star.png +0 -0
- data/public/images/adva-core/icons/stop.png +0 -0
- data/public/images/adva-core/icons/tag_green.png +0 -0
- data/public/images/adva-core/icons/tick.png +0 -0
- data/public/images/adva-core/icons/zoom.png +0 -0
- data/public/images/adva-core/indicator.gif +0 -0
- data/public/images/adva-core/lines.png +0 -0
- data/public/images/adva-core/preview.png +0 -0
- data/public/images/adva-core/theme_selected.png +0 -0
- data/public/javascripts/adva-core/admin.js +0 -22
- data/public/javascripts/adva-core/jquery/jquery-1.4.2.min.js +0 -154
- data/public/javascripts/adva-core/jquery/jquery.table_tree.js +0 -296
- data/public/javascripts/adva-core/jquery/jquery.tablednd_0_5.js +0 -386
- data/public/javascripts/adva-core/rails.js +0 -127
- data/public/javascripts/backup/admin/jquery.admin.js +0 -77
- data/public/javascripts/backup/admin/jquery.article.js +0 -22
- data/public/javascripts/backup/admin/jquery.cached_pages.js +0 -14
- data/public/javascripts/backup/admin/jquery.table_tree.backup.js +0 -279
- data/public/javascripts/backup/admin/jquery.table_tree.js +0 -10
- data/public/javascripts/backup/application.js +0 -38
- data/public/javascripts/backup/application.prototype.js +0 -135
- data/public/javascripts/backup/builder.js +0 -136
- data/public/javascripts/backup/controls.js +0 -965
- data/public/javascripts/backup/cookie.js +0 -49
- data/public/javascripts/backup/dragdrop.js +0 -975
- data/public/javascripts/backup/effects.js +0 -1130
- data/public/javascripts/backup/flash.js +0 -49
- data/public/javascripts/backup/jquery.dates.js +0 -49
- data/public/javascripts/backup/jquery.flash.js +0 -40
- data/public/javascripts/backup/jquery.roles.js +0 -23
- data/public/javascripts/backup/jquery/jquery-lowpro.js +0 -224
- data/public/javascripts/backup/jquery/jquery-ui.js +0 -273
- data/public/javascripts/backup/jquery/jquery.js +0 -19
- data/public/javascripts/backup/jquery/jquery.qtip.min.js +0 -15
- data/public/javascripts/backup/json.js +0 -139
- data/public/javascripts/backup/lowpro.js +0 -320
- data/public/javascripts/backup/parseuri.js +0 -39
- data/public/javascripts/backup/prototype.js +0 -4320
- data/public/javascripts/backup/roles.js +0 -16
- data/public/javascripts/backup/scriptaculous.js +0 -60
- data/public/javascripts/backup/slider.js +0 -275
- data/public/javascripts/backup/sound.js +0 -55
- data/public/javascripts/backup/unittest.js +0 -568
- data/public/stylesheets/adva-core/admin/forms.css +0 -172
- data/public/stylesheets/adva-core/admin/layout.css +0 -38
- data/public/stylesheets/adva-core/admin/lists.css +0 -54
- data/public/stylesheets/adva-core/admin/navigation.css +0 -234
- data/public/stylesheets/adva-core/admin/sidebar.css +0 -87
- data/public/stylesheets/adva-core/admin/styles.css +0 -136
- data/public/stylesheets/adva-core/common/forms.css +0 -174
- data/public/stylesheets/adva-core/common/layout.css +0 -93
- data/public/stylesheets/adva-core/common/reset.css +0 -42
- data/public/stylesheets/adva-core/common/styles.css +0 -41
- data/public/stylesheets/adva-core/default/layout.css +0 -0
- data/public/stylesheets/adva-core/default/styles.css +0 -30
- data/public/stylesheets/adva-core/simple/layout.css +0 -11
- data/public/stylesheets/backup/alternate/common.css +0 -76
- data/public/stylesheets/backup/alternate/forms.css +0 -121
- data/public/stylesheets/backup/alternate/header.css +0 -125
- data/public/stylesheets/backup/alternate/layout.css +0 -103
- data/public/stylesheets/backup/alternate/lists.css +0 -153
- data/public/stylesheets/backup/alternate/sidebar.css +0 -65
- data/public/stylesheets/backup/alternate/top.css +0 -123
- data/public/stylesheets/backup/content.css +0 -11
- data/public/stylesheets/backup/helptip.css +0 -35
- data/public/stylesheets/backup/jquery/alternate/jquery.tooltip.css +0 -13
- data/public/stylesheets/backup/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-icons_222222_256x240.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-icons_2e83ff_256x240.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-icons_454545_256x240.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-icons_888888_256x240.png +0 -0
- data/public/stylesheets/backup/jquery/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/public/stylesheets/backup/jquery/jquery-ui.css +0 -406
- data/public/stylesheets/backup/jquery/jquery.tooltip.css +0 -10
- data/public/stylesheets/backup/layout.css +0 -22
- data/public/stylesheets/backup/lists.css +0 -17
- data/public/stylesheets/backup/menu.css +0 -129
- data/public/stylesheets/backup/projection.css +0 -118
- data/public/stylesheets/backup/screen/top.css +0 -8
- data/public/stylesheets/backup/themes.css +0 -49
- data/public/stylesheets/backup/users.css +0 -40
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
require 'action_dispatch/routing/mapper'
|
|
2
|
-
require 'action_dispatch/routing/route_set'
|
|
3
|
-
|
|
4
|
-
module ActionDispatch
|
|
5
|
-
module Routing
|
|
6
|
-
class RouteSet
|
|
7
|
-
def recognize_path(path, environment = {})
|
|
8
|
-
method = (environment[:method] || "GET").to_s.upcase
|
|
9
|
-
path = Rack::Mount::Utils.normalize_path(path)
|
|
10
|
-
|
|
11
|
-
begin
|
|
12
|
-
|
|
13
|
-
# TODO submit a rails patch
|
|
14
|
-
|
|
15
|
-
# env = Rack::MockRequest.env_for(path, {:method => method})
|
|
16
|
-
env = Rack::MockRequest.env_for(path, {:method => method}).merge(environment)
|
|
17
|
-
rescue URI::InvalidURIError => e
|
|
18
|
-
raise ActionController::RoutingError, e.message
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
req = Rack::Request.new(env)
|
|
22
|
-
@set.recognize(req) do |route, matches, params|
|
|
23
|
-
params.each do |key, value|
|
|
24
|
-
if value.is_a?(String)
|
|
25
|
-
value = value.dup.force_encoding(Encoding::BINARY) if value.encoding_aware?
|
|
26
|
-
params[key] = URI.unescape(value)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
dispatcher = route.app
|
|
31
|
-
dispatcher = dispatcher.app while dispatcher.is_a?(Mapper::Constraints)
|
|
32
|
-
|
|
33
|
-
if dispatcher.is_a?(Dispatcher) && dispatcher.controller(params, false)
|
|
34
|
-
dispatcher.prepare_params!(params)
|
|
35
|
-
return params
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
raise ActionController::RoutingError, "No route matches #{path.inspect}"
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# make route_set generator pass the current segment/param name to to_param
|
|
2
|
-
# if arity allows it. so we can use param names in routes and distinguish them
|
|
3
|
-
# in the model.
|
|
4
|
-
|
|
5
|
-
require 'action_dispatch/routing/route_set'
|
|
6
|
-
|
|
7
|
-
ActionDispatch::Routing::RouteSet::Generator.class_eval do
|
|
8
|
-
def opts
|
|
9
|
-
parameterize = lambda do |name, value|
|
|
10
|
-
if name == :controller
|
|
11
|
-
value
|
|
12
|
-
elsif value.is_a?(Array)
|
|
13
|
-
value.map { |v| Rack::Mount::Utils.escape_uri(to_param(name, v)) }.join('/')
|
|
14
|
-
else
|
|
15
|
-
return nil unless param = to_param(name, value)
|
|
16
|
-
param.split('/').map { |v| Rack::Mount::Utils.escape_uri(v) }.join("/")
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
{:parameterize => parameterize}
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def to_param(name, value)
|
|
23
|
-
value.method(:to_param).arity == 1 ? value.to_param(name) : value.to_param
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
require 'gem_patching'
|
|
2
|
-
|
|
3
|
-
# Make build associations have their given type
|
|
4
|
-
# i.e.: site.sections.build(:type => 'Page').class == Page
|
|
5
|
-
# http://pragmatig.com/2010/06/04/fixing-rails-nested-attributes-on-collections-with-sti
|
|
6
|
-
|
|
7
|
-
Gem.patching('rails', '3.0.0') do
|
|
8
|
-
class ActiveRecord::Reflection::AssociationReflection
|
|
9
|
-
def build_association(*options)
|
|
10
|
-
if options.first.is_a?(Hash) && options.first[:type].present?
|
|
11
|
-
options.first[:type].to_s.constantize.new(*options)
|
|
12
|
-
else
|
|
13
|
-
klass.new(*options)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# Gem.patching('rails', '3.0.0.rc') do
|
|
2
|
-
# require 'action_view/template/resolver'
|
|
3
|
-
# ActionView::Resolver.class_eval do
|
|
4
|
-
# def caching?
|
|
5
|
-
# # @caching ||= !defined?(Rails.application) || Rails.application.config.cache_classes
|
|
6
|
-
# @caching ||= !defined?(Rails.application) || Rails.application.nil? || Rails.application.config.cache_classes
|
|
7
|
-
# end
|
|
8
|
-
# end
|
|
9
|
-
# end
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
require 'gem_patching'
|
|
2
|
-
|
|
3
|
-
# remove trailing segments '.1' and query params '?=1' from url
|
|
4
|
-
Gem.patching('rails', '3.0.0') do
|
|
5
|
-
ActionDispatch::Routing::RouteSet.class_eval do
|
|
6
|
-
def url_for_with_singleton_resource_patch(options)
|
|
7
|
-
url_for_without_singleton_resource_patch(options).
|
|
8
|
-
sub(/\.\d+(\Z|\?)/) { $1 || '' }.
|
|
9
|
-
sub(/\?=\d+$/, '')
|
|
10
|
-
end
|
|
11
|
-
alias_method_chain :url_for, :singleton_resource_patch
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# walks up the inheritance chain for given records if the generated named route
|
|
16
|
-
# helper does not exist
|
|
17
|
-
# see https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/2986-polymorphic_url-should-handle-sti-better
|
|
18
|
-
Gem.patching('rails', '3.0.0') do
|
|
19
|
-
require 'action_dispatch/routing/polymorphic_routes'
|
|
20
|
-
|
|
21
|
-
ActionDispatch::Routing::PolymorphicRoutes.module_eval do
|
|
22
|
-
def build_named_route_call_with_sti_fallbacks(records, inflection, options = {})
|
|
23
|
-
# FIXME should cache successful transformation for reuse
|
|
24
|
-
# FIXME currently only works if records is an array (also might be a single record or a Hash)
|
|
25
|
-
original_records = records
|
|
26
|
-
records = records.dup unless records.is_a?(Symbol)
|
|
27
|
-
method = build_named_route_call_without_sti_fallbacks(records, inflection, options)
|
|
28
|
-
if !respond_to?(method, true) && original_records.is_a?(Array) && records = walk_sti_for_named_route_call(original_records.dup)
|
|
29
|
-
build_named_route_call_with_sti_fallbacks(records, inflection, options)
|
|
30
|
-
else
|
|
31
|
-
method
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
alias_method_chain :build_named_route_call, :sti_fallbacks
|
|
35
|
-
|
|
36
|
-
def walk_sti_for_named_route_call(records)
|
|
37
|
-
walked = []
|
|
38
|
-
while record = records.pop
|
|
39
|
-
if record.is_a?(ActiveRecord::Base) && record.class.superclass != ActiveRecord::Base
|
|
40
|
-
return records + [record.becomes(record.class.superclass)] + walked
|
|
41
|
-
end
|
|
42
|
-
walked << record
|
|
43
|
-
end
|
|
44
|
-
nil
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# ActionDispatch::Integration::Runner defines method_missing but no accompaning
|
|
50
|
-
# respond_to? method. It thus doesn't respond_to? to named route url helpers even
|
|
51
|
-
# though it actually responds to them. Happens with the PolymorphicRoutes patch
|
|
52
|
-
# above, so this patch is here as well.
|
|
53
|
-
Gem.patching('rails', '3.0.0') do
|
|
54
|
-
ActionDispatch::Integration::Runner.module_eval do
|
|
55
|
-
def respond_to?(method, include_private = false)
|
|
56
|
-
@integration_session.respond_to?(method, include_private) || super
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
require 'responders/flash_responder'
|
|
2
|
-
|
|
3
|
-
Responders::FlashResponder.class_eval do
|
|
4
|
-
def flash_defaults_by_namespace(status)
|
|
5
|
-
defaults = []
|
|
6
|
-
slices = controller.controller_path.split('/')
|
|
7
|
-
|
|
8
|
-
while slices.size > 0
|
|
9
|
-
defaults << :"flash.#{slices.fill(controller.controller_name, -1).join('.')}.#{controller.action_name}.#{status}"
|
|
10
|
-
defaults << :"flash.#{slices.join('.')}.#{controller.action_name}.#{status}"
|
|
11
|
-
slices.shift
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
defaults << :"flash.#{controller.action_name}.#{status}"
|
|
15
|
-
defaults.uniq << ""
|
|
16
|
-
end
|
|
17
|
-
end
|
data/lib/patches/simple_form.rb
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
require 'gem_patching'
|
|
2
|
-
|
|
3
|
-
# add "blog edit_blog" as css classes. should propose a patch to simple_form
|
|
4
|
-
|
|
5
|
-
Gem.patching('simple_form', '1.2.2') do
|
|
6
|
-
SimpleForm::ActionViewExtensions::FormHelper.module_eval do
|
|
7
|
-
[:form_for, :fields_for, :remote_form_for].each do |helper|
|
|
8
|
-
class_eval <<-METHOD, __FILE__, __LINE__
|
|
9
|
-
def simple_#{helper}(record_or_name_or_array, *args, &block)
|
|
10
|
-
css_classes = simple_css_classes(record_or_name_or_array)
|
|
11
|
-
|
|
12
|
-
options = args.extract_options!
|
|
13
|
-
options[:builder] = SimpleForm::FormBuilder
|
|
14
|
-
options[:html] ||= {}
|
|
15
|
-
options[:html][:class] = "simple_form \#{css_classes} \#{options[:html][:class]}".strip
|
|
16
|
-
|
|
17
|
-
with_custom_field_error_proc do
|
|
18
|
-
#{helper}(record_or_name_or_array, *(args << options), &block)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
METHOD
|
|
22
|
-
|
|
23
|
-
def simple_css_classes(record_or_name_or_array)
|
|
24
|
-
css_classes = case record_or_name_or_array
|
|
25
|
-
when String, Symbol
|
|
26
|
-
record_or_name_or_array.to_s
|
|
27
|
-
when Array
|
|
28
|
-
record = record_or_name_or_array.last
|
|
29
|
-
action = record.new_record? ? 'new' : 'edit'
|
|
30
|
-
[dom_class(record), dom_class(record, action)].join(' ')
|
|
31
|
-
else
|
|
32
|
-
dom_class(record_or_name_or_array)
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
begin
|
|
2
|
-
require 'webrat'
|
|
3
|
-
rescue LoadError
|
|
4
|
-
end
|
|
5
|
-
require 'gem_patching'
|
|
6
|
-
|
|
7
|
-
Gem.patching('webrat', '0.7.0') do
|
|
8
|
-
Webrat::Link.class_eval do
|
|
9
|
-
def http_method
|
|
10
|
-
if !@element["data-method"].blank?
|
|
11
|
-
@element["data-method"]
|
|
12
|
-
elsif !onclick.blank? && onclick.include?("f.submit()")
|
|
13
|
-
http_method_from_js_form
|
|
14
|
-
else
|
|
15
|
-
:get
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end if defined?(Webrat)
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
begin
|
|
2
|
-
require 'webrat'
|
|
3
|
-
rescue LoadError
|
|
4
|
-
end
|
|
5
|
-
# require 'webrat/core/logging'
|
|
6
|
-
require 'gem_patching'
|
|
7
|
-
|
|
8
|
-
Gem.patching('webrat', '0.7.0') do
|
|
9
|
-
Webrat::Logging.class_eval do
|
|
10
|
-
def logger
|
|
11
|
-
case Webrat.configuration.mode
|
|
12
|
-
when :rails
|
|
13
|
-
defined?(Rails) ? Rails.logger : nil
|
|
14
|
-
else
|
|
15
|
-
super
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end if defined?(Webrat)
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
begin
|
|
2
|
-
require 'webrat'
|
|
3
|
-
rescue LoadError
|
|
4
|
-
end
|
|
5
|
-
# require 'webrat/core/logging'
|
|
6
|
-
require 'gem_patching'
|
|
7
|
-
|
|
8
|
-
Gem.patching('webrat', '0.7.0') do
|
|
9
|
-
Webrat::FileField.class_eval do
|
|
10
|
-
include ActionDispatch::TestProcess
|
|
11
|
-
|
|
12
|
-
def test_uploaded_file
|
|
13
|
-
return "" if @value.blank?
|
|
14
|
-
|
|
15
|
-
case Webrat.configuration.mode
|
|
16
|
-
when :rails
|
|
17
|
-
if content_type
|
|
18
|
-
# Rails 3 does not have an ActionController::TestUploadedFile anymore
|
|
19
|
-
Rack::Test::UploadedFile.new(@value, content_type)
|
|
20
|
-
else
|
|
21
|
-
Rack::Test::UploadedFile.new(@value)
|
|
22
|
-
end
|
|
23
|
-
when :rack, :merb
|
|
24
|
-
Rack::Test::UploadedFile.new(@value, content_type)
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end if defined?(Webrat)
|
data/lib/testing/assertions.rb
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
def assert_email_sent(attributes)
|
|
2
|
-
emails = ::ActionMailer::Base.deliveries
|
|
3
|
-
assert !emails.empty?, "No emails were sent"
|
|
4
|
-
matching_emails = emails.select do |email|
|
|
5
|
-
attributes.all? do |name, value|
|
|
6
|
-
case name
|
|
7
|
-
when 'body'
|
|
8
|
-
value.split(',').map(&:strip).all? { |value| email.body.include?(value) }
|
|
9
|
-
else
|
|
10
|
-
email.send(name).to_s == value
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
assert !matching_emails.empty?, begin
|
|
15
|
-
msg = ["None of the #{emails.size} emails matched #{attributes.inspect}.\nInstead, there are the following emails:"]
|
|
16
|
-
msg += emails.map { |email| attributes.keys.map { |key| [key, email.send(key)] }.map { |key, value| "#{key}: #{value}" }.join(',') }
|
|
17
|
-
msg.join("\n")
|
|
18
|
-
end
|
|
19
|
-
end
|
data/lib/testing/factories.rb
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
Factory.define :site do |f|
|
|
2
|
-
f.account Account.first || Account.create!
|
|
3
|
-
f.name 'adva-cms'
|
|
4
|
-
f.host 'www.example.com'
|
|
5
|
-
f.title 'adva-cms'
|
|
6
|
-
f.sections_attributes [{
|
|
7
|
-
:type => 'Page',
|
|
8
|
-
:name => 'Home',
|
|
9
|
-
:article_attributes => {
|
|
10
|
-
:body => 'Body'
|
|
11
|
-
}
|
|
12
|
-
}]
|
|
13
|
-
f.after_create { |site| Factory(:admin) }
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
Factory.define :section do |f|
|
|
17
|
-
f.site { Site.first || Factory(:site) }
|
|
18
|
-
f.name 'Home'
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
Factory.define :page do |f|
|
|
22
|
-
f.site { Site.first || Factory(:site) }
|
|
23
|
-
f.name 'Home'
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
Factory.define :content do |f|
|
|
27
|
-
f.site { Site.first || Factory(:site) }
|
|
28
|
-
f.section { Section.first || Factory(:section) }
|
|
29
|
-
f.title 'Content'
|
|
30
|
-
end
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
module GlobalHelpers
|
|
2
|
-
def site
|
|
3
|
-
Site.first || raise("Could not find a site. Maybe you want to set one up in your story background?")
|
|
4
|
-
end
|
|
5
|
-
|
|
6
|
-
def account
|
|
7
|
-
Account.first || raise("Could not find a site. Maybe you want to set one up in your story background?")
|
|
8
|
-
end
|
|
9
|
-
end
|
data/lib/testing/paths.rb
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
module Adva::Core::Paths
|
|
2
|
-
def path_to(page)
|
|
3
|
-
case page
|
|
4
|
-
|
|
5
|
-
when /^\//
|
|
6
|
-
page
|
|
7
|
-
|
|
8
|
-
when /^the home\s?page$/
|
|
9
|
-
'/'
|
|
10
|
-
|
|
11
|
-
when /^the site installation page$/
|
|
12
|
-
new_installation_path
|
|
13
|
-
|
|
14
|
-
when /^the site installation confirmation page$/
|
|
15
|
-
installation_path(Site.last)
|
|
16
|
-
|
|
17
|
-
when /^the "([^"]*)" section page$/
|
|
18
|
-
section = Section.where(:name => $1).first || raise("could not find section named #{$1}")
|
|
19
|
-
polymorphic_path(section)
|
|
20
|
-
|
|
21
|
-
when /^the admin sites page$/
|
|
22
|
-
polymorphic_path([:admin, :sites])
|
|
23
|
-
|
|
24
|
-
when /^the admin dashboard page$/
|
|
25
|
-
site = Site.first
|
|
26
|
-
polymorphic_path([:admin, site])
|
|
27
|
-
|
|
28
|
-
when /^the admin dashboard page for the site on "([^"]*)"$/
|
|
29
|
-
site = Site.find_by_host($1) || raise("could not find site with host #{$1}")
|
|
30
|
-
polymorphic_path([:admin, site])
|
|
31
|
-
|
|
32
|
-
when /^the admin sections page$/
|
|
33
|
-
site = Site.first
|
|
34
|
-
polymorphic_path([:admin, site, :sections])
|
|
35
|
-
|
|
36
|
-
when /^the admin "([^"]*)" section page$/
|
|
37
|
-
site = Site.first
|
|
38
|
-
section = Section.where(:name => $1).first || raise("could not find section named #{$1}")
|
|
39
|
-
polymorphic_path([:admin, site, section])
|
|
40
|
-
|
|
41
|
-
when /^the admin "([^"]*)" section settings page$/
|
|
42
|
-
site = Site.first
|
|
43
|
-
section = Section.where(:name => $1).first || raise("could not find section named #{$1}")
|
|
44
|
-
polymorphic_path([:edit, :admin, site, section])
|
|
45
|
-
|
|
46
|
-
else
|
|
47
|
-
named_route_helper = page.gsub(/(\Athe )|( page\Z)/, '').gsub(/ +/, '_').downcase + '_path'
|
|
48
|
-
raise "Can't find mapping from \"#{page}\" to a path.\nNow, go and add a mapping in #{__FILE__}" unless respond_to?(named_route_helper)
|
|
49
|
-
send named_route_helper
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
World(Adva::Core::Paths)
|
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
Given 'a site' do
|
|
2
|
-
@site = Factory(:site)
|
|
3
|
-
end
|
|
4
|
-
|
|
5
|
-
# TODO what's this?
|
|
6
|
-
Transform /^table:name,product_name$/ do |table|
|
|
7
|
-
transformed_table = table.hashes.map do |row|
|
|
8
|
-
row.merge('product_id' => Product.find_by_name(row.delete('product_name')).id)
|
|
9
|
-
end
|
|
10
|
-
Cucumber::Ast::Table.new(transformed_table)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
# Examples:
|
|
14
|
-
# 1. Given the following products:
|
|
15
|
-
# Also supports namespaced models, (cnet) indicating the namespace Cnet
|
|
16
|
-
# 2. Given the following (cnet) products:
|
|
17
|
-
Given /^the following ((?:\([a-z ]+\) )?(?:[\w]+)):$/ do |type, table|
|
|
18
|
-
type = type.gsub(/^\(([a-z ]+)\) /, "\\1/").gsub(' ', '_').singularize
|
|
19
|
-
table.hashes.each do |attributes|
|
|
20
|
-
type = attributes.delete('type').underscore if attributes.key?('type')
|
|
21
|
-
attributes['site'] = site if type.classify.constantize.column_names.include?('site_id')
|
|
22
|
-
Factory(type, attributes)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
Given /^a site with the following sections:$/ do |table|
|
|
27
|
-
Site.all.map(&:destroy)
|
|
28
|
-
@site = Factory(:site, :sections_attributes => [])
|
|
29
|
-
Given "the following sections:", table
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
Given /^a site with a (\w+) named "([^"]+)"$/ do |section, name|
|
|
33
|
-
Site.all.map(&:destroy)
|
|
34
|
-
@site = Factory(:site, :sections_attributes => [])
|
|
35
|
-
Given %(a #{section} named "#{name}")
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# e.g. a blog named "Blog"
|
|
39
|
-
Given /^an? (\w+) (name|title)d "([^"]+)"$/ do |model, attribute, value|
|
|
40
|
-
model = model.classify.constantize
|
|
41
|
-
attributes = { attribute => value }
|
|
42
|
-
attributes[:site_id] = site.id if model.column_names.include?('site_id')
|
|
43
|
-
attributes[:account_id] = account.id if model.column_names.include?('account_id')
|
|
44
|
-
model.where(attributes).first || model.create!(attributes)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
Given /^an? (\w+) with the following attributes:$/ do |model, table|
|
|
48
|
-
Factory(model, table.rows_hash)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# e.g. a post titled "Post" for the blog "Blog"
|
|
52
|
-
# e.g. a category named "Category" belonging to the blog "Blog"
|
|
53
|
-
Given /^an? (\w+) (name|title)d "([^"]+)" (?:for|belonging to) the (\w+) "([^"]+)"$/ do |model, attribute, value, section, name|
|
|
54
|
-
section = Given(%(a #{section} named "#{name}"))
|
|
55
|
-
collection = section.send(model.underscore.pluralize)
|
|
56
|
-
attributes = { attribute => value }
|
|
57
|
-
collection.where(attributes).first || collection.create!(attributes)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# e.g. a post with the title "Post" for the blog "Blog"
|
|
61
|
-
# e.g. a post with the title "Post" belonging to the blog "Blog"
|
|
62
|
-
Given /^an? (\w+) with the (\w+) "([^"]+)" (?:for|belonging to) the (\w+) "([^"]+)"$/ do |model, attribute, value, section, name|
|
|
63
|
-
section = Given(%(a #{section} named "#{name}"))
|
|
64
|
-
collection = section.send(model.underscore.pluralize)
|
|
65
|
-
attributes = { attribute => value }
|
|
66
|
-
collection.where(attributes).first || collection.create!(attributes)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
Given /^(\w+)s with the following attributes:$/ do |model, table|
|
|
70
|
-
table.hashes.each do |attributes|
|
|
71
|
-
Factory(model, attributes)
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
When /^(.+) that link$/ do |step|
|
|
76
|
-
raise "no last link" if @last_link.blank?
|
|
77
|
-
When %(#{step} "#{@last_link}")
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
When /^I (press|click) "(.*)" in the row (of the ([a-z ]+) table )?where "(.*)" is "(.*)"$/ do |press_or_click, link_or_button, _, table_id, header, cell_content|
|
|
81
|
-
body = Nokogiri::HTML(response.body)
|
|
82
|
-
table_xpath = table_id.nil? ? 'table' : "table[@id='#{table_id.gsub(/ /, '_')}']"
|
|
83
|
-
table_header_cells = body.xpath("//#{table_xpath}/descendant::th[normalize-space(text())='#{header}']/@id")
|
|
84
|
-
assert !table_header_cells.empty?, "could not find table header cell '#{header}'"
|
|
85
|
-
header_id = body.xpath("//#{table_xpath}/descendant::th[normalize-space(text())='#{header}']/@id").first.value
|
|
86
|
-
row_id = body.xpath("//#{table_xpath}/descendant::td[@headers='#{header_id}'][normalize-space(text())='#{cell_content}']/ancestor::tr/@id").first.value
|
|
87
|
-
within("##{row_id}") do
|
|
88
|
-
send({'press' => 'click_button', 'click' => 'click_link'}[press_or_click], link_or_button)
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
When /^I click on the link from the email to (.*)$/ do |to|
|
|
93
|
-
email = ::ActionMailer::Base.deliveries.detect { |email| email.to.include?(to) }
|
|
94
|
-
assert email, "email to #{to} could not be found"
|
|
95
|
-
link = email.body.to_s =~ %r((http://[^\s"]+)) && $1
|
|
96
|
-
get link
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
Then /^there should be an? (\w+)$/ do |model|
|
|
100
|
-
assert @last_record = model.classify.constantize.first, "could not find any #{model}"
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
Then /^there should be an? (\w+) named "([^\"]+)"$/ do |model, name|
|
|
104
|
-
assert @last_record = model.classify.constantize.where(:name => name).first, "could not find any #{model} named #{name}"
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
Then /^there should not be an? (\w+) named "([^"]*)"$/ do |model, name|
|
|
108
|
-
assert !model.classify.constantize.where(:name => name).first, "expected no #{model} named #{name} exists, but found one"
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
Then /^there should be a (\w+) with the following attributes:$/ do |model, table|
|
|
112
|
-
assert @last_record = model.classify.constantize.where(table.rows_hash).first, "could not find a #{model} with #{table.rows_hash.inspect}"
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
Then /^there should be (\w+)s with the following attributes:$/ do |model, table|
|
|
116
|
-
table.hashes.each do |attributes|
|
|
117
|
-
assert model.classify.constantize.where(attributes).first, "could not find a #{model} with #{attributes.inspect}"
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
Then /^that (\w+) should have an? (\w+) with the following attributes:$/ do |last, model, table|
|
|
122
|
-
assert @last_record.is_a?(last.classify.constantize), "wrong type for last #{last}"
|
|
123
|
-
assert @last_record.send(model.pluralize).where(table.rows_hash).first, "could not find a #{model} with #{table.rows_hash.inspect}"
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
Then /^that (\w+) should have (\w+)s with the following attributes:$/ do |last, model, table|
|
|
127
|
-
assert @last_record.is_a?(last.classify.constantize), "wrong type for last #{last}"
|
|
128
|
-
table.hashes.each do |attributes|
|
|
129
|
-
assert @last_record.send(model.pluralize).where(attributes).first, "could not find a #{model} with #{attributes.inspect}"
|
|
130
|
-
end
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
Then /^the title should be "([^"]+)"$/ do |title|
|
|
134
|
-
assert_select('title', title)
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
Then /^I should see a link "([^"]+)"$/ do |link|
|
|
138
|
-
@last_link = link
|
|
139
|
-
assert_select('a', link)
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
Then /^I should not see any (\w+)$/ do |type|
|
|
143
|
-
assert_select(".#{type.singularize}", :count => 0) # .#{type},
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
Then /^I should see an? (\w+)$/ do |type|
|
|
147
|
-
assert_select(".#{type}")
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
Then /^I should see an? (\w+) (?:titled|named) "([^"]+)"$/ do |type, text|
|
|
151
|
-
assert_select(".#{type} h2", text)
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
Then /^I should see an? (\w+) containing "([^"]+)"$/ do |type, text|
|
|
155
|
-
assert_select(".#{type}", /#{text}/)
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
Then /^I should see an? (\w+) list$/ do |type|
|
|
159
|
-
assert_select(".#{type}.list")
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
Then /^I should see a list of (\w+)$/ do |type|
|
|
163
|
-
assert_select(".#{type}.list")
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
Then /^I should see an? ([a-z ]+) form$/ do |type|
|
|
167
|
-
tokens = type.split(' ')
|
|
168
|
-
types = [tokens.join('_'), tokens.reverse.join('_')]
|
|
169
|
-
selectors = types.map { |type| "form.#{type}, form##{type}" }
|
|
170
|
-
assert_select(selectors.join(', '))
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
Then /^I should not see an? ([a-z ]+) form$/ do |type|
|
|
174
|
-
type = type.gsub(' ', '_') #.gsub(/edit_/, '')
|
|
175
|
-
assert_select("form.#{type}, form##{type}", :count => 0)
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
Then /^I should see an? ([a-z ]+) form with the following values:$/ do |type, table|
|
|
179
|
-
type = type.gsub(' ', '_') #.gsub(/edit_/, '')
|
|
180
|
-
assert_select("form.#{type}, form##{type}") do |form|
|
|
181
|
-
table.rows_hash.each do |name, value|
|
|
182
|
-
assert_equal value, webrat.current_scope.field_labeled(name).value
|
|
183
|
-
end
|
|
184
|
-
end
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
Then /^I should see a "(.+)" table with the following entries:$/ do |table_id, expected_table|
|
|
188
|
-
actual_table = table(tableish("table##{table_id} tr", 'td,th'))
|
|
189
|
-
begin
|
|
190
|
-
diff_table = expected_table.dup
|
|
191
|
-
diff_table.diff!(actual_table.dup)
|
|
192
|
-
rescue
|
|
193
|
-
puts "\nActual table:#{actual_table.to_s}\n"
|
|
194
|
-
puts "Expected table:#{expected_table.to_s}\n"
|
|
195
|
-
puts "Difference:#{diff_table.to_s}\n"
|
|
196
|
-
raise
|
|
197
|
-
end
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
Then /^I should see the "([^"]+)" page$/ do |name|
|
|
201
|
-
assert_select('h2', name)
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
Then(/(?:\$|eval) (.*)$/) do |code|
|
|
205
|
-
pp eval(code)
|
|
206
|
-
end
|
|
207
|
-
|
|
208
|
-
Then /^I should see a flash (error|notice|message) "(.+)"$/ do |message_type, message|
|
|
209
|
-
assert_match message, flash_cookie[message_type].to_s
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
Then /^I should not see a flash (error|notice) "(.+)"$/ do |message_type, message|
|
|
213
|
-
assert_no_match /message/, flash_cookie[message_type].to_s
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
Then /^I should (see|not see) the error "([^"]+)" for attribute "([^"]+)" of the "([^"]+)"$/ do |should_see, error_msg, attribute, model|
|
|
217
|
-
if should_see == 'see' # ugh ...
|
|
218
|
-
assert_select "*[id*=#{model.downcase.gsub(' ', '_')}_#{attribute.downcase.gsub(' ', '_')}] + span.error",
|
|
219
|
-
:text => error_msg
|
|
220
|
-
elsif should_see == 'not see'
|
|
221
|
-
assert_select "*[id*=#{model.downcase.gsub(' ', '_')}_#{attribute.downcase.gsub(' ', '_')}] + span.error",
|
|
222
|
-
:text => error_msg, :count => 0
|
|
223
|
-
end
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
Then /^the following emails should have been sent:$/ do |expected_emails|
|
|
227
|
-
expected_emails.hashes.each do |attributes|
|
|
228
|
-
assert_email_sent(attributes)
|
|
229
|
-
end
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
# Then /^I should see a "([^"]+)" table with the following entries:$/ do |table_id, expected_table|
|
|
233
|
-
# html_table = table(tableish("table##{table_id} tr", 'td,th'))
|
|
234
|
-
# expected_table.diff!(html_table)
|
|
235
|
-
# end
|
|
236
|
-
|
|
237
|
-
# TODO somehow merge this with what's in within_steps.rb
|
|
238
|
-
#
|
|
239
|
-
# Then I should see a comment within the sidebar
|
|
240
|
-
# Will look for '#sidebar .comment'
|
|
241
|
-
# Then I should see the cart within the sidebar
|
|
242
|
-
# Will look for '#sidebar #cart'
|
|
243
|
-
Then /^I should see (an?|the) ([a-z ]+) within the ([a-z ]+)$/ do |a_or_the, selector, context_selector|
|
|
244
|
-
within("##{context_selector}") do |context|
|
|
245
|
-
assert_select({'a' => '.', 'the' => '#'}[a_or_the]+selector)
|
|
246
|
-
end
|
|
247
|
-
end
|
|
248
|
-
|
|
249
|
-
Then /^"([^"]*)" should be filled in with "([^"]*)"$/ do |field, value|
|
|
250
|
-
field = webrat.field_labeled(field)
|
|
251
|
-
assert_equal value, field.value
|
|
252
|
-
end
|
|
253
|
-
|
|
254
|
-
Then /^"([^"]*)" should be checked$/ do |label|
|
|
255
|
-
field = webrat.field_labeled(label)
|
|
256
|
-
assert field.checked?, "expected the checkbox #{label} to be checked"
|
|
257
|
-
end
|
|
258
|
-
|
|
259
|
-
Then /^"([^"]*)" should not be checked$/ do |label|
|
|
260
|
-
field = webrat.field_labeled(label)
|
|
261
|
-
assert !field.checked?, "expected the checkbox #{label} not to be checked"
|
|
262
|
-
end
|
|
263
|
-
|
|
264
|
-
Then /^"([^"]*)" should be selected as "([^"]*)"$/ do |value, label|
|
|
265
|
-
select = webrat.field_labeled(label)
|
|
266
|
-
assert select, "count not find a select field labeled #{label}"
|
|
267
|
-
selected = select.element.xpath(".//option[@selected = 'selected']").first
|
|
268
|
-
assert selected, "could not find a selected option"
|
|
269
|
-
assert_equal value, selected.text
|
|
270
|
-
end
|
|
271
|
-
|
|
272
|
-
Then /^I should see "([^"]*)" formatted as a "([^"]*)" tag$/ do |value, tag|
|
|
273
|
-
assert_select(tag, value)
|
|
274
|
-
end
|
|
275
|
-
|
|
276
|
-
Then "debug" do
|
|
277
|
-
debugger
|
|
278
|
-
true
|
|
279
|
-
end
|