lib/pathway/rspec/matchers/require_fields.rb in pathway-0.11.0 vs lib/pathway/rspec/matchers/require_fields.rb in pathway-0.11.1
- old
+ new
@@ -4,40 +4,63 @@
RSpec::Matchers.define :require_fields do |*fields|
match do |form|
@form, @fields = form, fields
- not_defined.empty? && not_required.empty?
+ not_defined.empty? &&
+ not_required.empty? &&
+ allowing_null_values_matches? &&
+ not_allowing_null_values_matches?
end
match_when_negated do |form|
+ raise NotImplementedError, 'expect().not_to require_fields.not_allowing_null_values is not supported.' if @allowing_null_values || @not_allowing_null_values
+
@form, @fields = form, fields
not_defined.empty? && required.empty?
end
description do
- "require #{field_list} as #{pluralize_fields}"
+ null_value_allowed = @allowing_null_values ? ' allowing null values' : ''
+ null_value_disallowed = @not_allowing_null_values ? ' not allowing null values' : ''
+ "require #{field_list} as #{pluralize_fields}#{null_value_allowed}#{null_value_disallowed}"
end
failure_message do
- "Expected to require #{field_list} as #{pluralize_fields} but " +
- [not_required_list, not_defined_list].compact.join("; and ")
+ null_value_allowed = @allowing_null_values ? ' allowing null values' : ''
+ null_value_disallowed = @not_allowing_null_values ? ' not allowing null values' : ''
+
+ "Expected to require #{field_list} as #{pluralize_fields}#{null_value_allowed}#{null_value_disallowed} but " +
+ as_sentence([not_required_list, not_defined_list, accepting_null_list, not_accepting_null_list].compact,
+ connector: '; ', last_connector: '; and ')
end
failure_message_when_negated do
"Did not expect to require #{field_list} as #{pluralize_fields} but " +
- [required_list, not_defined_list].compact.join("; and ")
+ [required_list, not_defined_list].compact.join('; and ')
end
include Pathway::Rspec::FormSchemaHelpers
def required_list
"#{as_list(required)} #{were_was(required)} required" if required.any?
end
def not_required_list
"#{as_list(not_required)} #{were_was(not_required)} not required" if not_required.any?
+ end
+
+ chain :allowing_null_values do
+ fail 'cannot use allowing_null_values and not_allowing_null_values at the same time' if @not_allowing_null_values
+
+ @allowing_null_values = true
+ end
+
+ chain :not_allowing_null_values do
+ fail 'cannot use allowing_null_values and not_allowing_null_values at the same time' if @allowing_null_values
+
+ @not_allowing_null_values = true
end
end
RSpec::Matchers.alias_matcher :require_field, :require_fields