Sha256: dd2af78b05b2b4c2d615eb2acb8be96139c71de347c776ef0c3097d2c65fc230

Contents?: true

Size: 1.42 KB

Versions: 10

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

RSpec.shared_examples_for "a tz filter" do |values|
  include_context "filters"
  it_behaves_like "a filter"

  describe "#cast" do
    let(:result) { filter.send(:cast, value, nil) }

    values.fetch(:valid, ["please provide valid values"]).each do |valid_value|
      context "with #{valid_value} as a valid value" do
        let(:value) { valid_value }

        it "returns the value" do
          expect(result).to eql value
        end
      end
    end

    values.fetch(:invalid, ["please provide invalid values"]).each do |invalid_value|
      context "with #{invalid_value} as an invalid String" do
        let(:value) { invalid_value }

        it "raises an error" do
          expect do
            result
          end.to raise_error ActiveInteraction::InvalidValueError
        end
      end
    end

    context "with nil value" do
      let(:value) { nil }

      context "optional" do
        include_context "optional"

        it "returns the default" do
          expect(result).to eql options[:default]
        end
      end

      context "required" do
        include_context "required"

        it "raises an error" do
          expect do
            result
          end.to raise_error ActiveInteraction::MissingValueError
        end
      end
    end
  end

  describe "#database_column_type" do
    it "returns :string" do
      expect(filter.database_column_type).to be :string
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
mtk_framework-1.0.1 spec/gem_extensions/active_interaction/tz_filters_shared.rb
mtk_framework-1.0.0 spec/gem_extensions/active_interaction/tz_filters_shared.rb
mtk_framework-0.1.7 spec/gem_extensions/active_interaction/tz_filters_shared.rb
mtk_framework-0.1.6 spec/gem_extensions/active_interaction/tz_filters_shared.rb
mtk_framework-0.1.5 spec/gem_extensions/active_interaction/tz_filters_shared.rb
mtk_framework-0.1.4 spec/gem_extensions/active_interaction/tz_filters_shared.rb
mtk_framework-0.1.3 spec/gem_extensions/active_interaction/tz_filters_shared.rb
mtk_framework-0.1.2 spec/gem_extensions/active_interaction/tz_filters_shared.rb
mtk_framework-0.1.1 spec/gem_extensions/active_interaction/tz_filters_shared.rb
mtk_framework-0.1.0 spec/gem_extensions/active_interaction/tz_filters_shared.rb