Sha256: af5411820254ba736fc11ab19d81454d1a08f084bca58670b8ad0fdd5cbbc430

Contents?: true

Size: 1.84 KB

Versions: 27

Compression:

Stored size: 1.84 KB

Contents

require 'spec_helper'

RSpec.describe Tessa::AssetChange do
  subject(:change) { described_class.new(args) }
  let(:args) {
    {
      id: 123,
      action: "add",
    }
  }

  describe "#initialize" do
    context "with hash args" do
      it "sets id" do
        expect(subject.id).to eq(123)
      end

      it "sets action" do
        expect(subject.action).to eq("add")
      end
    end

    context "with array arg" do
      let(:args) { [123, { "action" => "add" }] }

      it "sets id" do
        expect(subject.id).to eq(123)
      end

      it "sets action" do
        expect(subject.action).to eq("add")
      end
    end
  end

  describe "#apply" do
    let(:asset) { instance_spy(Tessa::Asset) }
    before do
      expect(Tessa::Asset).to receive(:new).with(id: 123).and_return(asset)
    end

    context "with action 'add'" do
      before { args[:action] = "add" }
      it "calls complete! on asset with :id" do
        change.apply
        expect(asset).to have_received(:complete!)
      end
    end

    context "with action 'remove'" do
      before { args[:action] = "remove" }
      it "calls delete! on asset with :id" do
        change.apply
        expect(asset).to have_received(:delete!)
      end
    end
  end

  describe "#add?" do
    subject(:add?) { change.add? }

    context "action = 'add'" do
      before { change.action = 'add' }
      it { is_expected.to eq(true) }
    end

    context "action != 'add'" do
      before { change.action = 'something' }
      it { is_expected.to eq(false) }
    end
  end

  describe "#remove?" do
    subject(:remove?) { change.remove? }

    context "action = 'remove'" do
      before { change.action = 'remove' }
      it { is_expected.to eq(true) }
    end

    context "action != 'remove'" do
      before { change.action = 'something' }
      it { is_expected.to eq(false) }
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
tessa-1.2.3 spec/tessa/asset_change_spec.rb
tessa-1.2.2 spec/tessa/asset_change_spec.rb
tessa-2.0 spec/tessa/asset_change_spec.rb
tessa-1.2.1 spec/tessa/asset_change_spec.rb
tessa-1.2.0 spec/tessa/asset_change_spec.rb
tessa-1.1.1 spec/tessa/asset_change_spec.rb
tessa-1.1.0 spec/tessa/asset_change_spec.rb
tessa-1.0.2 spec/tessa/asset_change_spec.rb
tessa-1.0.1 spec/tessa/asset_change_spec.rb
tessa-1.0.0 spec/tessa/asset_change_spec.rb
tessa-1.0.0.pre.rc3 spec/tessa/asset_change_spec.rb
tessa-1.0.0.pre.rc2 spec/tessa/asset_change_spec.rb
tessa-1.0.0.pre.rc1 spec/tessa/asset_change_spec.rb
tessa-0.9.2 spec/tessa/asset_change_spec.rb
tessa-0.9.1 spec/tessa/asset_change_spec.rb
tessa-0.9.0 spec/tessa/asset_change_spec.rb
tessa-0.8.0 spec/tessa/asset_change_spec.rb
tessa-0.7.0 spec/tessa/asset_change_spec.rb
tessa-0.6.3 spec/tessa/asset_change_spec.rb
tessa-0.6.2 spec/tessa/asset_change_spec.rb