Sha256: b9e945e23eff60af880596f9db66c152f98cd982a995f40f1d85b075e513a583

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

# encoding: utf-8

describe Policy::Base::And do

  # defines mock builders #valid_policy and #invalid_policy
  require "support/composer"

  let(:one)   { valid_policy }
  let(:two)   { valid_policy }
  let(:three) { valid_policy }

  subject { described_class.new one, two, three }

  describe ".new" do

    it "creates a Node" do
      expect(subject).to be_kind_of Policy::Base::Node
    end

  end # new

  describe "#policies" do

    it "is initialized" do
      expect(subject.policies).to contain_exactly one, two, three
    end

  end # describe #policies

  describe "#valid?" do

    context "when all the policies are valid" do

      it "returns true" do
        expect(subject).to be_valid
      end

      it "clears previous errors" do
        subject.errors.add :base, :subject
        expect { subject.valid? }.to change { subject.errors.blank? }.to true
      end

    end # context

    context "when any policy is invalid" do

      let(:three)   { invalid_policy error: "three" }
      let!(:result) { subject.valid? }

      it "returns false" do
        expect(result).to eq false
      end

      it "picks up error from invalid policy" do
        expect(subject.errors.full_messages).to contain_exactly "three"
      end

    end # context

  end # describe #valid?

end # describe Policy::Base::Not

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
policy-2.0.0 spec/tests/lib/policy/base/and_spec.rb