require 'rails_helper'

RSpec.describe Comunicacao::Mensagem, type: :model do
  it{ is_expected.to have_many(:mensagens_do_usuario) }

  it{ is_expected.to validate_presence_of :titulo }
  it{ is_expected.to validate_presence_of :conteudo }


  describe '#adicionar_usuarios' do
    context 'quando é passado uma lista com 1(um) usuário' do
      it 'a quantidade de mensagens_do_usuario é 1' do
        configuracao = FactoryBot.create(:configuracao)
        usuario = Usuario.find_by(nome_de_usuario: "Comum") || FactoryBot.create(:usuario_comum)
        mensagem = FactoryBot.create(:comunicacao_mensagem, usuarios: [usuario])

        expect(mensagem.reload.mensagens_do_usuario.count).to eq 1
      end
    end

    context 'quando é passado uma 1(um) usuário' do
      it 'a quantidade de mensagens_do_usuario é 1' do
        configuracao = FactoryBot.create(:configuracao)
        usuario = Usuario.find_by(nome_de_usuario: "Comum") || FactoryBot.create(:usuario_comum)
        mensagem = FactoryBot.create(:comunicacao_mensagem, usuarios: usuario)

        expect(mensagem.reload.mensagens_do_usuario.count).to eq 1
      end
    end

    context 'quando é passado 2(dois) ou mais usuários' do
      it 'a quantidade de mensagens_do_usuario é 1' do
        configuracao = FactoryBot.create(:configuracao)
        usuario_1 = Usuario.find_by(nome_de_usuario: "Comum") || FactoryBot.create(:usuario_comum)
        usuario_2 = Usuario.find_by(nome_de_usuario: "Admin") || FactoryBot.create(:admin)
        mensagem = FactoryBot.create(:comunicacao_mensagem, usuarios: [usuario_1, usuario_2])

        expect(mensagem.reload.mensagens_do_usuario.count).to eq 2
      end
    end
  end
end
