aboutsummaryrefslogtreecommitdiffstats
path: root/spec/support
diff options
context:
space:
mode:
Diffstat (limited to 'spec/support')
-rw-r--r--spec/support/integration_spec_helper.rb34
1 files changed, 26 insertions, 8 deletions
diff --git a/spec/support/integration_spec_helper.rb b/spec/support/integration_spec_helper.rb
index 78efb9027..36306559d 100644
--- a/spec/support/integration_spec_helper.rb
+++ b/spec/support/integration_spec_helper.rb
@@ -1,15 +1,20 @@
module IntegrationSpecHelper
- def paginate_collection klass, decorator, page=1
- ModelDecorator.decorate( klass.page(page), with: decorator )
+ def paginate_collection klass, decorator, page=1, context={}
+ collection = klass.page(page)
+ if decorator
+ collection = ModelDecorator.decorate(collection, with: decorator, context: context)
+ end
+ collection
end
def build_paginated_collection factory, decorator, opts={}
+ context = opts.delete(:context) || {}
count = opts.delete(:count) || 2
page = opts.delete(:page) || 1
klass = nil
- count.times { klass ||= create(factory, opts).class }
- paginate_collection klass, decorator, page
+ count.times { klass = create(factory, opts).class }
+ paginate_collection klass, decorator, page, context
end
module Methods
@@ -30,20 +35,33 @@ RSpec.configure do |config|
config.include IntegrationSpecHelper, type: :view
end
-RSpec::Matchers.define :have_link_for_each_item do |collection, name, href|
+RSpec::Matchers.define :have_link_for_each_item do |collection, name, opts|
+ opts = {href: opts} unless opts.is_a? Hash
+ href = opts[:href]
+ method = opts[:method]
+ method_selector = method.present? ? "[data-method='#{method.downcase}']": ""
match do |actual|
collection.each do |item|
- expect(rendered).to have_selector("tr.#{TableBuilderHelper.item_row_class_name(collection)}-#{item.id} .actions a[href='#{href.call(item)}']", count: 1)
+ @selector = "tr.#{TableBuilderHelper.item_row_class_name(collection)}-#{item.id} .actions a[href='#{href.call(item)}']#{method_selector}"
+ expect(rendered).to have_selector(@selector, count: 1)
end
end
description { "have #{name} link for each item" }
+ failure_message do
+ "expected view to have #{name} link for each item, failed with selector: \"#{@selector}\""
+ end
end
RSpec::Matchers.define :have_the_right_number_of_links do |collection, count|
- match do |actual|
+ match do
collection.each do |item|
- expect(rendered).to have_selector("tr.#{TableBuilderHelper.item_row_class_name(collection)}-#{item.id} .actions a", count: count)
+ @selector = "tr.#{TableBuilderHelper.item_row_class_name(collection)}-#{item.id} .actions a"
+ expect(rendered).to have_selector(@selector, count: count)
end
end
description { "have #{count} links for each item" }
+ failure_message do
+ actual = Capybara::Node::Simple.new(rendered).all(@selector).count
+ "expected #{count} links for each item, got #{actual} for \"#{@selector}\""
+ end
end