from unittest.mock import Mock

import pytest

from libgranzottiPyTools.spam.main import EnviadorDeSpam
from libgranzottiPyTools.spam.modelos import Usuario


@pytest.mark.parametrize(
    'usuarios',
    [
        [
            Usuario(nome='Giovanni', email='<EMAIL>'),
            Usuario(nome='Meire', email='<EMAIL>')
        ],
        [
            Usuario(nome='Giovanni', email='<EMAIL>'),
        ]
    ]
)
def test_qtd_de_spam(sessao, usuarios):
    for usuario in usuarios:
        sessao.salvar(usuario)
    enviador = Mock()
    enviador_de_spam = EnviadorDeSpam(sessao, enviador)
    enviador_de_spam.enviar_emails(
        '<EMAIL>',
        'Curso Python Pro',
        'Confira os módulos fantásticos'
    )
    assert len(usuarios) == enviador.enviar.call_count


def test_parametros_de_spam(sessao):
    usuario = Usuario(nome='Giovanni', email='<EMAIL>')
    sessao.salvar(usuario)
    enviador = Mock()
    enviador_de_spam = EnviadorDeSpam(sessao, enviador)
    enviador_de_spam.enviar_emails(
        '<EMAIL>',
        'Curso Python Pro',
        'Confira os módulos fantásticos'
    )
    enviador.enviar.assert_called_once_with(
        '<EMAIL>',
        '<EMAIL>',
        'Curso Python Pro',
        'Confira os módulos fantásticos'
    )

from unittest.mock import Mock

import pytest

from libgranzottiPyTools.spam.main import EnviadorDeSpam
from libgranzottiPyTools.spam.modelos import Usuario


@pytest.mark.parametrize(
    'usuarios',
    [
        [
            Usuario(nome='Giovanni', email='<EMAIL>'),
            Usuario(nome='Meire', email='<EMAIL>')
        ],
        [
            Usuario(nome='Giovanni', email='<EMAIL>'),
        ]
    ]
)
def test_qtd_de_spam(sessao, usuarios):
    for usuario in usuarios:
        sessao.salvar(usuario)
    enviador = Mock()
    enviador_de_spam = EnviadorDeSpam(sessao, enviador)
    enviador_de_spam.enviar_emails(
        '<EMAIL>',
        'Curso Python Pro',
        'Confira os módulos fantásticos'
    )
    assert len(usuarios) == enviador.enviar.call_count


def test_parametros_de_spam(sessao):
    usuario = Usuario(nome='Giovanni', email='<EMAIL>')
    sessao.salvar(usuario)
    enviador = Mock()
    enviador_de_spam = EnviadorDeSpam(sessao, enviador)
    enviador_de_spam.enviar_emails(
        '<EMAIL>',
        'Curso Python Pro',
        'Confira os módulos fantásticos'
    )
    enviador.enviar.assert_called_once_with(
        '<EMAIL>',
        '<EMAIL>',
        'Curso Python Pro',
        'Confira os módulos fantásticos'
    )
