Skip to content

Commit

Permalink
Move test helpers into namespace
Browse files Browse the repository at this point in the history
  • Loading branch information
pabloh committed Jun 4, 2017
1 parent 28f6d8f commit c3051c1
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 70 deletions.
2 changes: 1 addition & 1 deletion lib/pathway/testing/matchers/accept_optional_fields.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
[optional_list, not_defined_list].compact.join("; and ")
end

include FormSchemaHelpers
include Pathway::Testing::FormSchemaHelpers

def optional_list
"#{as_list(optional)} #{were_was(optional)} optional" if optional.any?
Expand Down
2 changes: 1 addition & 1 deletion lib/pathway/testing/matchers/fail_on.rb
Original file line number Diff line number Diff line change
Expand Up @@ -94,5 +94,5 @@ def details_failure_description
details_matches? ? nil : "have details like #{description_of(@details)} but instead got #{description_of(error.details)}"
end

include ListHelpers
include Pathway::Testing::ListHelpers
end
24 changes: 14 additions & 10 deletions lib/pathway/testing/matchers/field_list_helpers.rb
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
require 'pathway/testing/matchers/list_helpers'

module FieldListHelpers
include ListHelpers
module Pathway
module Testing
module FieldListHelpers
include ListHelpers

def field_list
as_list(@fields)
end
def field_list
as_list(@fields)
end

def were_was(list)
list.size > 1 ? "were" : "was"
end
def were_was(list)
list.size > 1 ? "were" : "was"
end

def pluralize_fields
@fields.size > 1 ? "fields" : "field"
def pluralize_fields
@fields.size > 1 ? "fields" : "field"
end
end
end
end
100 changes: 52 additions & 48 deletions lib/pathway/testing/matchers/form_schema_helpers.rb
Original file line number Diff line number Diff line change
@@ -1,53 +1,57 @@
require 'pathway/testing/matchers/field_list_helpers'

module FormSchemaHelpers
include FieldListHelpers

def rules
@form.rules
end

def not_defined_list
"#{as_list(not_defined)} #{were_was(not_defined)} not defined" if not_defined.any?
end

def required
@required ||= @fields.select { |field| required?(field) }
end

def optional
@optional ||= @fields.select { |field| optional?(field) }
end

def not_required
@not_required ||= defined - required
end

def not_optional
@not_required ||= defined - optional
end

def not_defined
@not_defined ||= @fields - defined
end

def defined
@defined ||= @fields & rules.keys
end

def optional?(field)
if rules[field]&.type == :implication
left = rules[field].left

left.type == :predicate && left.name == :key? && left.args.first == field
end
end

def required?(field)
if rules[field]&.type == :and
left = rules[field].left

left.type == :predicate && left.name == :key? && left.args.first == field
module Pathway
module Testing
module FormSchemaHelpers
include FieldListHelpers

def rules
@form.rules
end

def not_defined_list
"#{as_list(not_defined)} #{were_was(not_defined)} not defined" if not_defined.any?
end

def required
@required ||= @fields.select { |field| required?(field) }
end

def optional
@optional ||= @fields.select { |field| optional?(field) }
end

def not_required
@not_required ||= defined - required
end

def not_optional
@not_required ||= defined - optional
end

def not_defined
@not_defined ||= @fields - defined
end

def defined
@defined ||= @fields & rules.keys
end

def optional?(field)
if rules[field]&.type == :implication
left = rules[field].left

left.type == :predicate && left.name == :key? && left.args.first == field
end
end

def required?(field)
if rules[field]&.type == :and
left = rules[field].left

left.type == :predicate && left.name == :key? && left.args.first == field
end
end
end
end
end
22 changes: 13 additions & 9 deletions lib/pathway/testing/matchers/list_helpers.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
module ListHelpers
def as_list(items)
as_sentence(items.map(&:inspect))
end
module Pathway
module Testing
module ListHelpers
def as_list(items)
as_sentence(items.map(&:inspect))
end

def as_sentence(items, connector: ", ", last_connector: " and ")
*rest, last = items
def as_sentence(items, connector: ", ", last_connector: " and ")
*rest, last = items

result = String.new
result << rest.join(connector) << last_connector if rest.any?
result << last
result = String.new
result << rest.join(connector) << last_connector if rest.any?
result << last
end
end
end
end
2 changes: 1 addition & 1 deletion lib/pathway/testing/matchers/require_fields.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
[required_list, not_defined_list].compact.join("; and ")
end

include FormSchemaHelpers
include Pathway::Testing::FormSchemaHelpers

def required_list
"#{as_list(required)} #{were_was(required)} required" if required.any?
Expand Down

0 comments on commit c3051c1

Please sign in to comment.