Sha256: 8d253b1051c2cc61af7824712c81d6765690b2543cd2dcc1a98ee356d8c589e2

Contents?: true

Size: 1.76 KB

Versions: 3

Compression:

Stored size: 1.76 KB

Contents

require 'spec_helper'
require 'click_session/configuration'
require 'click_session/exceptions'
require 'support/test_unit_model'

describe ClickSession::Async do
  describe "#run" do
    let(:model) {
      create(:test_unit_model)
    }

    describe "guard clauses" do
      context "when no callback urls has been configured" do
        it "raises a friendly error" do
          async_click_session = ClickSession::Async.new(model)

          expect { async_click_session.run }.to raise_error(ClickSession::ConfigurationError)
        end
      end
    end

    context 'when processing is successful' do
      before do
        mock_configuration_model_class_with(model)
      end

      before :each do
        mock_configuration_callback_urls
        disable_screenshots
      end

      it "saves the session_state" do
        async_click_session = ClickSession::Async.new(model)

        expect { async_click_session.run }.
          to change { ClickSession::SessionState.count }.by(1)
      end

      it "returns a serialized OK response without the model" do
        async_click_session = ClickSession::Async.new(model)

        response = async_click_session.run

        expect(response[:id]).to be_a(Integer)
        expect(response[:status][:success]).to be(true)
        expect(response[:data]).to eql(model.as_json)
      end
    end
  end

  def mock_configuration_callback_urls
    allow(ClickSession.configuration).
      to receive(:success_callback_url).
      and_return("http://success.callback.url")

    allow(ClickSession.configuration).
      to receive(:failure_callback_url).
      and_return("http://failure.callback.url")
  end

  def disable_screenshots
    allow(ClickSession.configuration).
      to receive(:screenshot_enabled?).
      and_return(false)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
click_session-0.1.1 spec/click_session/async_spec.rb
click_session-0.1.0 spec/click_session/async_spec.rb
click_session-0.0.1 spec/click_session/async_spec.rb