Sha256: e86e1582c0d168baa2ae94cb3d8389f744e2a5e11bdd66c090b95a3ffeed3284

Contents?: true

Size: 1.64 KB

Versions: 1

Compression:

Stored size: 1.64 KB

Contents

RSpec.describe SolidusEasypost::TrackerWebhookHandler do
  describe '.call' do
    context 'when the event is not tracker.updated' do
      it 'does not process the event' do
        stub_const('Spree::Event', class_spy(Spree::Event))
        create(:carton, easy_post_tracker_id: 'trk_test')

        payload = {
          'description' => 'tracker.created',
          'result' => {
            'id' => 'trk_test',
          },
        }
        described_class.call(payload)

        expect(Spree::Event).not_to have_received(:fire)
      end
    end

    context 'when the tracker was not registered in Solidus' do
      it 'does not process the event' do
        stub_const('Spree::Event', class_spy(Spree::Event))
        create(:carton, easy_post_tracker_id: 'trk_test')

        payload = {
          'description' => 'tracker.updated',
          'result' => {
            'id' => 'trk_test1',
          },
        }
        described_class.call(payload)

        expect(Spree::Event).not_to have_received(:fire)
      end
    end

    context 'when the event is a tracker update for a registered tracker' do
      it 'forwards the event via the event bus' do
        stub_const('Spree::Event', class_spy(Spree::Event))
        carton = create(:carton, easy_post_tracker_id: 'trk_test')

        payload = {
          'description' => 'tracker.updated',
          'result' => {
            'id' => 'trk_test',
          },
        }
        described_class.call(payload)

        expect(Spree::Event).to have_received(:fire).with(
          'solidus_easypost.tracker.updated',
          carton: carton,
          payload: payload,
        )
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
solidus_easypost-3.0.0 spec/solidus_easypost/tracker_webhook_handler_spec.rb