Sha256: 7de60107d3ece20a857e445aaf05eec25972f8532dfc5897ed28a1a949e7d9e8

Contents?: true

Size: 1.44 KB

Versions: 11

Compression:

Stored size: 1.44 KB

Contents

# encoding: utf-8

require 'spec_helper'

describe Axiom::Types::LengthComparable, '.extended' do
  subject { object.extend(described_class) }

  let(:object) { Class.new(Axiom::Types::Type) }

  it 'delegates to the ancestor' do
    # RSpec will reset stubbed methods after the example. A normal expectation
    # causes a SystemStackError to be thrown, so we stub it first so that
    # RSpec tracks the original method (if any), then we add our own stub that
    # actually works, and finally when the example finishes RSpec will reset
    # the Module#extended method back to it's original state.
    allow_any_instance_of(Module).to receive(:extended).with(object)

    delegated_ancestor = false
    Module.send(:undef_method, :extended)
    Module.send(:define_method, :extended) { |_| delegated_ancestor = true }
    expect { subject }.to change { delegated_ancestor }.from(false).to(true)
  end

  it 'adds minimum_length method' do
    expect { subject }.to change { object.respond_to?(:minimum_length) }
      .from(false).to(true)
  end

  it 'adds maxumum_length method' do
    expect { subject }.to change { object.respond_to?(:maximum_length) }
      .from(false).to(true)
  end

  it 'sets the default minimum_length' do
    expect(subject.minimum_length)
      .to equal(Axiom::Types::Infinity.instance)
  end

  it 'sets the default maximum_length' do
    expect(subject.maximum_length)
      .to equal(Axiom::Types::NegativeInfinity.instance)
  end
end

Version data entries

11 entries across 9 versions & 4 rubygems

Version Path
cm-admin-1.5.22 vendor/bundle/ruby/3.3.0/gems/axiom-types-0.1.1/spec/unit/axiom/types/length_comparable/class_methods/extended_spec.rb
cm-admin-1.5.21 vendor/bundle/ruby/3.3.0/gems/axiom-types-0.1.1/spec/unit/axiom/types/length_comparable/class_methods/extended_spec.rb
cm-admin-1.5.20 vendor/bundle/ruby/3.3.0/gems/axiom-types-0.1.1/spec/unit/axiom/types/length_comparable/class_methods/extended_spec.rb
grape-extra_validators-2.0.0 vendor/bundle/ruby/2.6.0/gems/axiom-types-0.1.1/spec/unit/axiom/types/length_comparable/class_methods/extended_spec.rb
grape-extra_validators-1.0.0 vendor/bundle/ruby/2.4.0/gems/axiom-types-0.1.1/spec/unit/axiom/types/length_comparable/class_methods/extended_spec.rb
config_gems_initialization_aim-0.1.4 vendor/bundle/ruby/2.5.0/gems/config_gems_initialization_aim-0.1.1/vendor/bundle/ruby/2.5.0/gems/axiom-types-0.1.1/spec/unit/axiom/types/length_comparable/class_methods/extended_spec.rb
config_gems_initialization_aim-0.1.4 vendor/bundle/ruby/2.5.0/gems/axiom-types-0.1.1/spec/unit/axiom/types/length_comparable/class_methods/extended_spec.rb
config_gems_initialization_aim-0.1.3 vendor/bundle/ruby/2.5.0/gems/config_gems_initialization_aim-0.1.1/vendor/bundle/ruby/2.5.0/gems/axiom-types-0.1.1/spec/unit/axiom/types/length_comparable/class_methods/extended_spec.rb
config_gems_initialization_aim-0.1.3 vendor/bundle/ruby/2.5.0/gems/axiom-types-0.1.1/spec/unit/axiom/types/length_comparable/class_methods/extended_spec.rb
axiom-types-0.1.1 spec/unit/axiom/types/length_comparable/class_methods/extended_spec.rb
axiom-types-0.1.0 spec/unit/axiom/types/length_comparable/class_methods/extended_spec.rb