Skip to content
Open

737 #738

Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Terminado o Exercicio de produçao de código testavel.
  • Loading branch information
Carloshbfreire committed Sep 27, 2022
commit ff62408a2508f8b3b9b2954e362f39b84d83d4af
22 changes: 22 additions & 0 deletions Libpythonpro/spam/db.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
class Sessao:
contador = 0
usuarios = []

def salvar(self, usuario):
Sessao.contador += 1
usuario.id = Sessao.contador
self.usuarios.append(usuario)

def listar(self):
return self.usuarios

def roll_back(self):
pass

def fechar(self):
pass


class Conexao:
def gerar_sessao(self):
return Sessao()

def fechar(self):
pass
9 changes: 8 additions & 1 deletion Libpythonpro/spam/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,12 @@ def __init__(self, sessao, enviador):
self.sessao = sessao

def enviar_emails(self, remetente, assunto, corpo):
pass
for usuario in self.sessao.listar():
self.enviador.enviar(
remetente,
usuario.email,
assunto,
corpo
)


3 changes: 2 additions & 1 deletion Libpythonpro/spam/modelos.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
class Usuario:
def __init__(self, nome):
def __init__(self, nome, email):
self.email = email
self.nome = nome
self.id = None
4 changes: 4 additions & 0 deletions Libpythonpro/spam/test_spam/enviador_de_email.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
class Enviador:
def __init__(self):
self.qtd_email_enviados = 0

def enviar(self, remetente, destinatário, assunto, corpo):
if '@' not in remetente:
raise EmailInvalido(f'Email de Remetente Inválido:{remetente}')
self.qtd_email_enviados += 1
return remetente


Expand Down
7 changes: 5 additions & 2 deletions Libpythonpro/spam/test_spam/testes_usuarios.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@


def test_salvar_usuario(sessao):
usuario= Usuario(nome='Carlos')
usuario= Usuario(nome='Carlos', email= 'carhb@outlook.com' )
sessao.salvar(usuario)
assert isinstance(usuario.id, int)


def test_listar_usuario(sessao):
usuarios = [Usuario(nome='Carlos'), Usuario(nome='Givani')]
usuarios = [
Usuario(nome='Carlos', email='carhb@outlook.com'),
Usuario(nome='Givani', email='carhb@outlook.com')
]
for usuario in usuarios:
sessao.salvar(usuario)
assert usuarios == sessao.listar()
Expand Down
15 changes: 12 additions & 3 deletions Libpythonpro/tests/test_spam/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ def fechar(self):
pass


@pytest.fixture(scope= 'session')
@pytest.fixture(scope='session')
def conexao():
#Setup
# Setup
conexao_obj = Conexao()
yield conexao_obj
#Tear Down
# Tear Down
conexao_obj.fechar()


Expand All @@ -49,3 +49,12 @@ def sessao(conexao):
yield sessao_obj
sessao_obj.roll_back()
sessao_obj.fechar()









26 changes: 23 additions & 3 deletions Libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,31 @@
import pytest

from Libpythonpro.spam.main import EnviadorDeSpam
from Libpythonpro.spam.modelos import Usuario
from Libpythonpro.spam.test_spam.enviador_de_email import Enviador


def test_envio_de_spam(sessao):
enviador_de_spam= EnviadorDeSpam(sessao, Enviador())
@pytest.mark.parametrize(
'usuarios',
[
[
Usuario(nome='Carlos', email='carhb@outlook.com'),
Usuario(nome='Givani', email='carhb@outlook.com')
],
[
Usuario(nome='Carlos', email='carhb@outlook.com')
]
]
)
def test_qde_de_spam(sessao, usuarios):
for usuario in usuarios:
sessao.salvar(usuario)
enviador = Enviador()
enviador_de_spam= EnviadorDeSpam(sessao, enviador)
enviador_de_spam.enviar_emails(
'carhb@outlook.com',
'Curso Pythonpro',
'Confira os módulos fantásticos'
)
assert len(usuarios) == enviador.qtd_email_enviados