Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions .idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/inspectionProfiles/profiles_settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions .idea/libpythonpro.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ language: python
python:
- 3.7
install:
- pip install -q pipenv codecov
- pipenv sync --dev
- pip install -r requirements-dev.txt codecov
script:
- flake8
- pytest libpythonpro --cov=libpythonpro
Expand Down
3 changes: 3 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -659,3 +659,6 @@ specific requirements.
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<http://www.gnu.org/licenses/>.


nesse curo ensina fazer o PullRequest de projetos abertos
Empty file added __init__.py
Empty file.
3 changes: 3 additions & 0 deletions libpythonpro/.flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[flake8]
max-line-length = 120
exclude=.venv
3 changes: 3 additions & 0 deletions libpythonpro/.pyup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
requirements:
- Pipfile
- Pipfile.lock
11 changes: 11 additions & 0 deletions libpythonpro/.travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
language: python
python:
- 3.7
install:
- pip install -q pipenv codecov
- pipenv sync --dev
script:
- flake8
- -pytest libpythonpro --cov=liboythonpro
after_sucess:
- codecov
2 changes: 1 addition & 1 deletion libpythonpro/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '0.2'
__version__ = "0.1"
3 changes: 1 addition & 2 deletions libpythonpro/github_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@

def buscar_avatar(usuario):
"""
Busca o avatar de um usuário no Github

Busca o avatar de um usuário no githupyb
:param usuario: str com o nome de usuário no github
:return: str com o link do avatar
"""
Expand Down
4 changes: 2 additions & 2 deletions libpythonpro/spam/enviador_de_email.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
class Enviador:
def enviar(self, remetente, destinatario, assunto, corpo):
if '@' not in remetente:
raise EmailInvalido(f'Email de remetente inválido: {remetente}')
raise EmailInvalido(f'Email de remetente invalido: {remetente} ')
return remetente


class EmailInvalido(Exception):
pass
pass
2 changes: 1 addition & 1 deletion libpythonpro/spam/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ def enviar_emails(self, remetente, assunto, corpo):
usuario.email,
assunto,
corpo
)
)
4 changes: 2 additions & 2 deletions libpythonpro/spam/modelos.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
class Usuario:
class Usuario(object):
def __init__(self, nome, email):
self.email = email
self.nome = nome
self.id = None
self.id = None
6 changes: 2 additions & 4 deletions libpythonpro/spam/db.py → libpythonpro/spam/tb.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class Sessao:
contador = 0
usuarios = []

def salvar(self, usuario):
def salvar (self, usuario):
Sessao.contador += 1
usuario.id = Sessao.contador
self.usuarios.append(usuario)
Expand All @@ -21,11 +21,9 @@ def fechar(self):


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

def gerar_sessao(self):
return Sessao()

def fechar(self):
pass
pass
2 changes: 1 addition & 1 deletion libpythonpro/tests/test_exemplo.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
def test_int():
assert 1 == 1
assert 1 == 1
8 changes: 4 additions & 4 deletions libpythonpro/tests/test_spam/conftest.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import pytest

from libpythonpro.spam.db import Conexao
from ...spam.tb import Conexao


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


Expand All @@ -17,4 +17,4 @@ def sessao(conexao):
sessao_obj = conexao.gerar_sessao()
yield sessao_obj
sessao_obj.roll_back()
sessao_obj.fechar()
sessao_obj.fechar()
16 changes: 8 additions & 8 deletions libpythonpro/tests/test_spam/test_enviador_de_email.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
import pytest

from libpythonpro.spam.enviador_de_email import EmailInvalido, Enviador
from ...spam.enviador_de_email import Enviador, EmailInvalido


def test_criar_enviador_de_email():
enviador = Enviador()
assert enviador is not None


@pytest.mark.parametrize(
'remetente',
['foo@bar.com.br', 'renzo@python.pro.br']
['99@rara.com.br', 'doougals.@gmail.com']
)
def test_remetente(remetente):
enviador = Enviador()
resultado = enviador.enviar(
resultado=enviador.enviar(
remetente,
'luciano@python.pro.br',
'Cursos Python Pro',
'Primeira turma Guido Von Rossum aberta.'
'Prieiira turma Guido Von Rossum aberta.'
)

assert remetente in resultado


@pytest.mark.parametrize(
'remetente',
['', 'renzo']
['', 'doougals.ail.com']
)
def test_remetente_invalido(remetente):
enviador = Enviador()
Expand All @@ -34,5 +34,5 @@ def test_remetente_invalido(remetente):
remetente,
'luciano@python.pro.br',
'Cursos Python Pro',
'Primeira turma Guido Von Rossum aberta.'
)
'Prieiira turma Guido Von Rossum aberta.'
)
28 changes: 14 additions & 14 deletions libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,48 +2,48 @@

import pytest

from libpythonpro.spam.main import EnviadorDeSpam
from libpythonpro.spam.modelos import Usuario
from ...spam.enviador_de_email import Enviador
from ...spam.main import EnviadorDeSpam
from ...spam.modelos import Usuario


@pytest.mark.parametrize(
'usuarios',
[
[
Usuario(nome='Renzo', email='renzo@python.pro.br'),
Usuario(nome='Luciano', email='renzo@python.pro.br')
Usuario(nome='Douglas', email="doouglas@gmail.com.br"),
Usuario(nome='Dodo', email="doouglas@gmail.com.br")
],
[
Usuario(nome='Renzo', email='renzo@python.pro.br')
Usuario(nome='Douglas', email="doouglas@gmail.com.br"),
]
]
)
def test_qde_de_spam(sessao, usuarios):
def test_envio_de_spam(sessao, usuarios):
for usuario in usuarios:
sessao.salvar(usuario)
enviador = Mock()
enviador = Mock()
enviador_de_spam = EnviadorDeSpam(sessao, enviador)
enviador_de_spam.enviar_emails(
'renzo@python.pro.br',
'dodo@gmail.com',
'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='Renzo', email='renzo@python.pro.br')
usuario = Usuario(nome='Douglas', email="doouglas@gmail.com.br")
sessao.salvar(usuario)
enviador = Mock()
enviador_de_spam = EnviadorDeSpam(sessao, enviador)
enviador_de_spam.enviar_emails(
'luciano@python.pro.br',
'luciano@gmail.com',
'Curso Python Pro',
'Confira os módulos fantásticos'
)
enviador.enviar.assert_called_once_with(
'luciano@python.pro.br',
'renzo@python.pro.br',
'luciano@gmail.com',
"doouglas@gmail.com.br",
'Curso Python Pro',
'Confira os módulos fantásticos'
)
)
13 changes: 7 additions & 6 deletions libpythonpro/tests/test_spam/test_github_api.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
from unittest.mock import Mock
import unittest.mock

import pytest
from pytest_mock import mocker

from libpythonpro import github_api
from ... import github_api


@pytest.fixture
def avatar_url(mocker):
resp_mock = Mock()
resp_mock = unittest.mock.Mock()
url = 'https://avatars3.githubusercontent.com/u/402714?v=4'
resp_mock.json.return_value = {
'login': 'renzo', 'id': 402714,
'avatar_url': url,
}
get_mock = mocker.patch('libpythonpro.github_api.requests.get')
get_mock = mocker.patch('libpythonpro.libpythonpro.github_api.requests.get')
get_mock.return_value = resp_mock
return url

Expand All @@ -24,5 +25,5 @@ def test_buscar_avatar(avatar_url):


def test_buscar_avatar_integracao():
url = github_api.buscar_avatar('renzon')
assert 'https://avatars3.githubusercontent.com/u/3457115?v=4' == url
url = github_api.buscar_avatar('renzo')
assert 'https://avatars3.githubusercontent.com/u/402714?v=4' == url
10 changes: 5 additions & 5 deletions libpythonpro/tests/test_spam/test_usuarios.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
from libpythonpro.spam.modelos import Usuario
from ...spam.modelos import Usuario


def test_salvar_usuario(sessao):
usuario = Usuario(nome='Renzo', email='renzo@python.pro.br')
usuario = Usuario(nome='Douglas', email="doouglas@gmail.com.br")
sessao.salvar(usuario)
assert isinstance(usuario.id, int)


def test_listar_usuarios(sessao):
def test_listar_usuario(sessao):
usuarios = [
Usuario(nome='Renzo', email='renzo@python.pro.br'),
Usuario(nome='Luciano', email='renzo@python.pro.br')
Usuario(nome='Douglas', email="doouglas@gmail.com.br"),
Usuario(nome='Dodo', email="doouglas@gmail.com.br")
]
for usuario in usuarios:
sessao.salvar(usuario)
Expand Down