require 'rails_helper'

RSpec.describe GestaoDeEstoque::MovimentacaoDoEstoque, type: :model do
  it { is_expected.to belong_to(:orcamento).class_name("Orcamento") }
  it { is_expected.to belong_to(:estoque).class_name("GestaoDeEstoque::Estoque") }
  it { is_expected.to belong_to(:unidade_orcamentaria).class_name("Loa::UnidadeOrcamentaria") }
  it { is_expected.to belong_to(:origem).required }

  context "Qual o tipo da origem" do
    it 'Quando é recebimento' do
      movimentacao = FactoryBot.build(:gestao_de_estoque_movimentacao_do_estoque , origem_type: "GestaoDeEstoque::RecebimentoDeMaterial")
      expect(movimentacao.retorna_tipo).to eq "Entrada"
    end
    it "Quando é requisição" do
      movimentacao = FactoryBot.build(:gestao_de_estoque_movimentacao_do_estoque , origem_type: "Administrativo::RequisicaoDeMaterial")
      expect(movimentacao.retorna_tipo).to eq "Saída"
    end
  end

  describe "#salva_data_da_origem" do
    it "salva a data de recebimento quando for entrada" do
      movimentacao = FactoryBot.create(:gestao_de_estoque_movimentacao_do_estoque, :entrada)

      expect(movimentacao.data_da_movimentacao).to eq movimentacao.origem.data_do_recebimento
    end

    it "salva a data de requisicao quando for saida" do
      movimentacao = FactoryBot.create(:gestao_de_estoque_movimentacao_do_estoque, :saida)

      expect(movimentacao.data_da_movimentacao).to eq movimentacao.origem.data_da_requisicao
    end
  end
end
