Skip to content

Commit

Permalink
Pytest framework issue after conftest.py file refactor.
Browse files Browse the repository at this point in the history
  • Loading branch information
dougfraga committed Sep 7, 2020
1 parent 7279553 commit 5fa9910
Show file tree
Hide file tree
Showing 11 changed files with 136 additions and 1 deletion.
2 changes: 1 addition & 1 deletion libpythonpro_doug/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '0.2'
__version__ = '0.3'
Empty file.
31 changes: 31 additions & 0 deletions libpythonpro_doug/spam/db.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from time import sleep


class Session:
count = 0
users = []

def save(self, user):
Session.count += 1
user.id = Session.count
self.users.append(user)

def list(self):
return self.users

def roll_back(self):
self.users.clear()

def close(self):
pass


class Connection:
def __init__(self):
sleep(1)

def generate_session(self):
return Session()

def close(self):
pass
9 changes: 9 additions & 0 deletions libpythonpro_doug/spam/email_sender.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class Sender(object):
def send(self, shipper, recipient, title, body):
if '@' not in shipper:
raise InvalidEmail(f'Invalid shipper address: {shipper}')
return shipper


class InvalidEmail(Exception):
pass
7 changes: 7 additions & 0 deletions libpythonpro_doug/spam/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class SpamSender:
def __init__(self, session, sender):
self.session = session
self.sender = sender

def send_emails(self, shipper, title, body):
pass
4 changes: 4 additions & 0 deletions libpythonpro_doug/spam/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
class User:
def __init__(self, name):
self.name = name
self.id = None
Empty file.
20 changes: 20 additions & 0 deletions libpythonpro_doug/tests/test_spam/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import pytest

from libpythonpro_doug.spam.db import Connection


@pytest.fixture(scope='session')
def connection():
# Setup
connection_obj = Connection()
yield connection_obj
# Tear Down
connection_obj.close()


@pytest.fixture
def session(connection):
session_obj = connection.generate_session()
yield session_obj
session_obj.roll_back()
session_obj.close()
39 changes: 39 additions & 0 deletions libpythonpro_doug/tests/test_spam/test_email_sender.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import pytest

from libpythonpro_doug.spam.email_sender import Sender, InvalidEmail


def test_create_email_sender():
email_sender = Sender()
assert email_sender is not None


@pytest.mark.parametrize(
'shipper',
['douglas.fraga@gmail.com', 'douglas@threetek.com.br']
)
def test_email_sender(shipper):
email_sender = Sender()

result = email_sender.send(
shipper,
'dfr_dede@yahoo.com.br',
'Python Pro training course',
'email body'
)
assert shipper in result


@pytest.mark.parametrize(
'shipper',
['', 'douglas']
)
def test_invalid_email_sender(shipper):
email_sender = Sender()
with pytest.raises(InvalidEmail):
email_sender.send(
shipper,
'dfr_dede@yahoo.com.br',
'Python Pro training course',
'email body'
)
11 changes: 11 additions & 0 deletions libpythonpro_doug/tests/test_spam/test_send_to_user_base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from libpythonpro_doug.spam.email_sender import Sender
from libpythonpro_doug.spam.main import SpamSender


def test_send_spam(session):
spam_sender = SpamSender(session, Sender())
spam_sender.send_emails(
'douglas.fraga@gmail.com',
'Python Pro Training Course',
'Email body'
)
14 changes: 14 additions & 0 deletions libpythonpro_doug/tests/test_spam/test_users.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from libpythonpro_doug.spam.models import User


def test_save_user(session):
user = User(name='Doug')
session.save(user)
assert isinstance(user.id, int)


def test_list_user(session):
users = [User(name='Doug'), User(name='Carol')]
for user in users:
session.save(user)
assert users == session.list()

0 comments on commit 5fa9910

Please sign in to comment.