Sha256: 20749780ce300f5e1046e717145dac458620a79f4ef8e01a5838ad70637fc948

Contents?: true

Size: 1.93 KB

Versions: 5

Compression:

Stored size: 1.93 KB

Contents

# frozen_string_literal: true

require "assert"
require "much-rails/destroy_action"

module MuchRails::DestroyAction
  class UnitTests < Assert::Context
    desc "MuchRails::DestroyAction"
    subject{ unit_class }

    let(:unit_class){ MuchRails::DestroyAction }

    should "include MuchRails::Mixin" do
      assert_that(subject).includes(MuchRails::Mixin)
    end
  end

  class ReceiverTests < UnitTests
    desc "receiver"
    subject{ receiver_class }

    setup do
      Assert.stub_on_call(receiver_class, :change_result) do |call|
        @change_action_class_change_result_call = call
      end
    end

    let(:receiver_class) do
      Class.new do
        include MuchRails::DestroyAction

        destroy_result{ MuchRails::Result.success }

        on_call{}
      end
    end

    should have_imeths :destroy_result

    should "be configured as expected" do
      assert_that(subject).includes(MuchRails::ChangeAction)
    end

    should "call .change_result for its .destroy_result method" do
      subject.destroy_result

      assert_that(@change_action_class_change_result_call).is_not_nil
    end
  end

  class InitTests < ReceiverTests
    desc "when init"
    subject{ receiver_class.new(params: {}, request: nil) }

    should have_imeths :destroy_result

    should "call #change_result for its #destroy_result method" do
      Assert.stub_on_call(subject, :change_result) do |call|
        @change_action_instance_change_result_call = call
      end

      subject.destroy_result
      assert_that(@change_action_instance_change_result_call).is_not_nil
    end

    should "raise a custom error message if no destroy result block defined" do
      Assert.stub(
        receiver_class.much_rails_change_action_config,
        :change_result_block,
      ){ nil }

      exception = assert_that{ subject.destroy_result }.raises
      assert_that(exception.message)
        .equals("A `destroy_result` block must be defined.")
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
much-rails-0.4.3 test/unit/destroy_action_tests.rb
much-rails-0.4.2 test/unit/destroy_action_tests.rb
much-rails-0.4.1 test/unit/destroy_action_tests.rb
much-rails-0.4.0 test/unit/destroy_action_tests.rb
much-rails-0.3.0 test/unit/destroy_action_tests.rb