# frozen_string_literal: true require 'rails_helper' RSpec.describe ProductCart, type: :model do let(:product_cart) { create(:product_cart) } it 'should belong to product' do expect(product_cart).to respond_to(:product) end it 'should belong to cart' do expect(product_cart).to respond_to(:cart) end describe '#sole_product_in_cart' do it 'validates for duplicate products in the cart' do another_product_cart = build(:product_cart, cart: product_cart.cart, product: product_cart.product) expect(another_product_cart.save).to be_falsey expect(another_product_cart.errors[:product_id]).to be_present end end describe '#product_quantity' do it "validates the requested quantity against the product's available quantity" do product = create(:product, available_quantity: 5) another_product_cart = build(:product_cart, cart: product_cart.cart, product:, quantity: 10) expect(another_product_cart.save).to be_falsey expect(another_product_cart.errors[:product_id][0]).to eq('not enough in existence') end end end