FactoryGirl.define do
  factory :stock_location, class: Spree::StockLocation do
    name 'NY Warehouse'
    address1 '1600 Pennsylvania Ave NW'
    city 'Washington'
    zipcode '20500'
    phone '(202) 456-1111'
    active true

    state  { |stock_location| stock_location.association(:state) }
    country  { |stock_location| stock_location.association(:country) }

    factory :stock_location_with_items do
      after(:create) do |stock_location, evaluator|
        # variant will add itself to all stock_locations in an after_create
        # creating a product will automatically create a master variant
        product_1 = create(:product)
        product_2 = create(:product)

        stock_location.stock_items.where(:variant_id => product_1.master.id).first.adjust_count_on_hand(10)
        stock_location.stock_items.where(:variant_id => product_2.master.id).first.adjust_count_on_hand(20)
      end
    end
  end
end

FactoryGirl.define do
  factory :stock_location, class: Spree::StockLocation do
    name 'NY Warehouse'
    address1 '1600 Pennsylvania Ave NW'
    city 'Washington'
    zipcode '20500'
    phone '(202) 456-1111'
    active true

    country  { |stock_location| stock_location.association(:country) }
    state  { |stock_location| stock_location.association(:state, :country => stock_location.country) }

    factory :stock_location_with_items do
      after(:create) do |stock_location, evaluator|
        # variant will add itself to all stock_locations in an after_create
        # creating a product will automatically create a master variant
        product_1 = create(:product)
        product_2 = create(:product)

        stock_location.stock_items.where(:variant_id => product_1.master.id).first.adjust_count_on_hand(10)
        stock_location.stock_items.where(:variant_id => product_2.master.id).first.adjust_count_on_hand(20)
      end
    end
  end
end

Use stock_location's country for stock_location's state in stock_location factory
Use stock_location's country for stock_location's state in stock_location factory

This is so that it doesn't create a new country and associate the state with that.
