Sha256: 76583f68f0ca1b0b25cc2b6ef5b885dd1b8cce3ee8db8515cef52dc0c033e12f

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

require 'helper'

class RetryableRecordTest < Spec
  let(:retries) { 0 }
  let(:record) { FakeRecord.new(retries) }

  describe :retry do
    before do
      RetryableRecord.retry(record) do
        record.concurrent_modification!
        record.save!
      end
    end

    describe "without retry" do
      let(:retries) { 0 }

      it "saves and does not retry" do
        assert_equal 0, record.counter[:reload]
        assert_equal 1, record.counter[:save]
      end
    end

    describe "with retry once" do
      let(:retries) { 5 }

      it "saves and reloads 5 times" do
        assert_equal 5, record.counter[:reload]
        assert_equal 1, record.counter[:save]
      end
    end

    it "does not rescue other errors" do
      assert_raises RuntimeError do
        record.retryable do
          raise "foo"
        end
      end

      assert_equal 0, record.counter[:reload]
      assert_equal 1, record.counter[:save]
    end
  end

  describe :retryable do
    before do
      record.retryable do
        record.concurrent_modification!
        record.save!
      end
    end

    let(:retries) { 0 }

    it "saves and does not retry" do
      assert_equal 0, record.counter[:reload]
      assert_equal 1, record.counter[:save]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
retryable_record-0.2.0 test/retryable_record_test.rb