# frozen_string_literal: true

require 'spec_helper'

RSpec.describe DefaultStockLocation do
  describe '.find_or_create' do
    context 'when a location named default already exists' do
      let!(:location) do
        country = create(:country)
        state = Spree::State.create(name: 'Alabama', country:)
        Spree::StockLocation.create!(
          name: 'default',
          country_id: country.id,
          state_id: state.id
        )
      end

      it 'returns the location' do
        expect(described_class.find_or_create).to eq(location)
      end

      it 'does not create any other location' do
        expect { described_class.find_or_create }.not_to change { Spree::StockLocation.count }
      end
    end

    context 'when a location named default does not exist' do
      it 'returns the location' do
        location = described_class.find_or_create
        expect(location.name).to eq('default')
      end

      it 'does not create any other location' do
        expect { described_class.find_or_create }
          .to change { Spree::StockLocation.count }.from(0).to(1)
      end
    end
  end
end
