Sha256: 088672fb79bc1f39ce06bf4d2242c2e28ecc88f9ede470965b082895d6e5807f

Contents?: true

Size: 680 Bytes

Versions: 3

Compression:

Stored size: 680 Bytes

Contents

# encoding: utf-8

require "ostruct"
require "shared/i18n"

describe Assertion do

  include_context "preloaded translations"

  it "works" do
    IsAdult = Assertion.about :name, :age do
      age.to_i >= 18
    end

    AdultOnly = Assertion.guards :user do
      IsAdult[user.to_h]
    end

    andrew = OpenStruct.new(name: "Andrew", age: 13, city: "Moscow")
    andriy = OpenStruct.new(name: "Andriy", age: 28, city: "Kiev")

    expect { AdultOnly[andrew] }.to raise_error Assertion::InvalidError
    expect(AdultOnly[andriy]).to eql andriy
  end

  after { Object.send :remove_const, :AdultOnly }
  after { Object.send :remove_const, :IsAdult   }

end # describe Assertion

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
assertion-0.2.2 spec/integration/guard_spec.rb
assertion-0.2.1 spec/integration/guard_spec.rb
assertion-0.2.0 spec/integration/guard_spec.rb