Sha256: cb0df6dfe5fab583b8d3e154aeef78e1dafde3c2711a481c45812a86a8734665

Contents?: true

Size: 1.86 KB

Versions: 16

Compression:

Stored size: 1.86 KB

Contents

# frozen_string_literal: true

module Formify
  module SpecHelpers
    extend ActiveSupport::Concern

    included do
      let(:form) { described_class }
      let(:initialized_form) { initialize_form }
      let(:attributes_override) { {} }
      let(:attributes_to_pass) { attributes.merge(attributes_override) }

      let(:result) { do_result }

      let(:value) { do_value }

      let(:error) { result.error }
      let(:error_message) { result.error.message }

      def do_result
        initialized_form.save
      end

      def do_value
        result.value
      end

      def initialize_form
        form.new(attributes_to_pass)
      end

      # Common Expectation Helpers

      def expect_error_message(message)
        expect(error_message).to include(message)
      end

      def expect_error_with_attribute(attribute)
        expect(error.attribute.try(:to_sym)).to eq(attribute.to_sym)
      end

      def expect_error_with_attribute_value(attribute, value)
        initialized_form.send("#{attribute}=", value)
        expect_error_with_attribute(attribute)
      end

      def expect_error_with_missing_attribute(attribute)
        raise 'No attribute' unless attributes.key?(attribute)

        attributes_to_pass.delete(attribute)
        expect_error_with_attribute(attribute)
      end

      def expect_invalid(*args, **keywords)
        expect_not_valid(*args, **keywords)
      end

      def expect_not_valid(attribute: nil, message: nil)
        expect_error_with_attribute(attribute) if attribute.present?
        expect_error_message(message) if message.present?

        expect(initialized_form).not_to be_valid
      end

      def expect_valid
        expect(initialized_form).to be_valid
      end

      def expect_valid_with_attribute_value(attribute, value)
        initialized_form.send("#{attribute}=", value)
        expect_valid
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
formify-0.9.0 lib/formify/spec_helpers.rb
formify-0.8.0 lib/formify/spec_helpers.rb
formify-0.7.0 lib/formify/spec_helpers.rb
formify-0.6.0 lib/formify/spec_helpers.rb
formify-0.5.0 lib/formify/spec_helpers.rb
formify-0.4.0 lib/formify/spec_helpers.rb
formify-0.3.7 lib/formify/spec_helpers.rb
formify-0.3.6 lib/formify/spec_helpers.rb
formify-0.3.5 lib/formify/spec_helpers.rb
formify-0.3.4 lib/formify/spec_helpers.rb
formify-0.3.3 lib/formify/spec_helpers.rb
formify-0.3.2 lib/formify/spec_helpers.rb
formify-0.2.1 lib/formify/spec_helpers.rb
formify-0.2.0 lib/formify/spec_helpers.rb
formify-0.1.1 lib/formify/spec_helpers.rb
formify-0.1.0 lib/formify/spec_helpers.rb