Untitled
unknown
ruby
4 years ago
2.5 kB
11
Indexable
class Store < ApplicationRecord resourcify belongs_to :user belongs_to :branch_office has_many :store_orders has_many :purcharse_orders has_many :movement_products has_many :sale_documents has_many :store_products validates :user_id, presence: true validates :address, presence: true validates :name, presence: true validates_uniqueness_of :address validates_uniqueness_of :name after_create :set_products before_save :recalculate_stock_in_all_products, if: proc { fictional_changed? && !fictional } scope :no_fictional, -> { where(fictional: false) } def set_products products = Product.all products.each do |product| next if StoreProduct.where(store_id: id, product_id: product.id).present? StoreProduct.create(product_id: product.id, store_id: id, stock: 0) end end def recalculate_stock_in_all_products StoreProduct.ids.each do |store_product_id| RecalculateProductStockJob.perform_later(store_product_id) end end end require 'rails_helper' RSpec.describe Store, type: :model do subject { described_class.new } let(:store) { create(:store) } let(:product) { create(:products) } it 'is valid with valid attributes' do expect(store).to be_valid end it { is_expected.to validate_presence_of(:name) } it { is_expected.to validate_presence_of(:address) } it { is_expected.to validate_uniqueness_of(:address).case_insensitive } it { is_expected.to validate_uniqueness_of(:name).case_insensitive } it { is_expected.to validate_presence_of(:name) } it { is_expected.to validate_presence_of(:last_name) } it { is_expected.to validate_presence_of(:phone_number) } it { is_expected.to validate_presence_of(:address) } it { is_expected.to validate_presence_of(:biography) } it { is_expected.to validate_presence_of(:date_of_birth) } it { is_expected.to belong_to(:user) } it { is_expected.to belong_to(:branch_office) } it { is_expected.to have_many(:store_orders) } it { is_expected.to have_many(:purcharse_orders) } it { is_expected.to have_many(:movement_products) } it { is_expected.to have_many(:sale_documents) } it { is_expected.to have_many(:store_products) } context 'when recalculate' do let(:product_number) { Product.count } before do store_count = StoreProduct.count create(:product) end it 'when we need to recalculate all products' do expect(store_count).to change{ 2 } end end end
Editor is loading...