diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 000000000..26d33521a --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 000000000..3dce9c67a --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 000000000..105ce2da2 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/libpythonpro.iml b/.idea/libpythonpro.iml new file mode 100644 index 000000000..28b42bd89 --- /dev/null +++ b/.idea/libpythonpro.iml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 000000000..14145163d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 000000000..3478ad2cf --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..94a25f7f4 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 6694375b7..7bc9da60c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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 diff --git a/LICENSE b/LICENSE index dbbe35581..855362a1d 100644 --- a/LICENSE +++ b/LICENSE @@ -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 . + + +nesse curo ensina fazer o PullRequest de projetos abertos \ No newline at end of file diff --git a/__init__.py b/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/libpythonpro/.flake8 b/libpythonpro/.flake8 new file mode 100644 index 000000000..796971547 --- /dev/null +++ b/libpythonpro/.flake8 @@ -0,0 +1,3 @@ +[flake8] +max-line-length = 120 +exclude=.venv \ No newline at end of file diff --git a/libpythonpro/.pyup.yml b/libpythonpro/.pyup.yml new file mode 100644 index 000000000..551ae40dd --- /dev/null +++ b/libpythonpro/.pyup.yml @@ -0,0 +1,3 @@ +requirements: + - Pipfile + - Pipfile.lock \ No newline at end of file diff --git a/libpythonpro/.travis.yml b/libpythonpro/.travis.yml new file mode 100644 index 000000000..6c060517f --- /dev/null +++ b/libpythonpro/.travis.yml @@ -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 \ No newline at end of file diff --git a/libpythonpro/__init__.py b/libpythonpro/__init__.py index b650ceb08..a4e2017f0 100644 --- a/libpythonpro/__init__.py +++ b/libpythonpro/__init__.py @@ -1 +1 @@ -__version__ = '0.2' +__version__ = "0.1" diff --git a/libpythonpro/github_api.py b/libpythonpro/github_api.py index 8b0fbafb9..b1685f749 100644 --- a/libpythonpro/github_api.py +++ b/libpythonpro/github_api.py @@ -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 """ diff --git a/libpythonpro/spam/enviador_de_email.py b/libpythonpro/spam/enviador_de_email.py index fa0952223..b5101fdfa 100644 --- a/libpythonpro/spam/enviador_de_email.py +++ b/libpythonpro/spam/enviador_de_email.py @@ -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 \ No newline at end of file diff --git a/libpythonpro/spam/main.py b/libpythonpro/spam/main.py index f81821ae4..6725b161f 100644 --- a/libpythonpro/spam/main.py +++ b/libpythonpro/spam/main.py @@ -10,4 +10,4 @@ def enviar_emails(self, remetente, assunto, corpo): usuario.email, assunto, corpo - ) + ) \ No newline at end of file diff --git a/libpythonpro/spam/modelos.py b/libpythonpro/spam/modelos.py index 093b35a2a..1b9a7ec0c 100644 --- a/libpythonpro/spam/modelos.py +++ b/libpythonpro/spam/modelos.py @@ -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 \ No newline at end of file diff --git a/libpythonpro/spam/db.py b/libpythonpro/spam/tb.py similarity index 83% rename from libpythonpro/spam/db.py rename to libpythonpro/spam/tb.py index ce90ca60b..fd1a4f6b2 100644 --- a/libpythonpro/spam/db.py +++ b/libpythonpro/spam/tb.py @@ -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) @@ -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 \ No newline at end of file diff --git a/libpythonpro/tests/test_exemplo.py b/libpythonpro/tests/test_exemplo.py index 78cd50236..775ac58e1 100644 --- a/libpythonpro/tests/test_exemplo.py +++ b/libpythonpro/tests/test_exemplo.py @@ -1,2 +1,2 @@ def test_int(): - assert 1 == 1 + assert 1 == 1 \ No newline at end of file diff --git a/libpythonpro/tests/test_spam/conftest.py b/libpythonpro/tests/test_spam/conftest.py index a16f3970a..5f7f387ff 100644 --- a/libpythonpro/tests/test_spam/conftest.py +++ b/libpythonpro/tests/test_spam/conftest.py @@ -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() @@ -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() \ No newline at end of file diff --git a/libpythonpro/tests/test_spam/test_enviador_de_email.py b/libpythonpro/tests/test_spam/test_enviador_de_email.py index c72a0bbe9..3d0d416b7 100644 --- a/libpythonpro/tests/test_spam/test_enviador_de_email.py +++ b/libpythonpro/tests/test_spam/test_enviador_de_email.py @@ -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() @@ -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.' + ) \ No newline at end of file diff --git a/libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py b/libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py index d2db43893..34d592412 100644 --- a/libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py +++ b/libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py @@ -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' - ) + ) \ No newline at end of file diff --git a/libpythonpro/tests/test_spam/test_github_api.py b/libpythonpro/tests/test_spam/test_github_api.py index 21ce9c5d0..7c3a2a0f1 100644 --- a/libpythonpro/tests/test_spam/test_github_api.py +++ b/libpythonpro/tests/test_spam/test_github_api.py @@ -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 @@ -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 diff --git a/libpythonpro/tests/test_spam/test_usuarios.py b/libpythonpro/tests/test_spam/test_usuarios.py index 09b523445..b624329de 100644 --- a/libpythonpro/tests/test_spam/test_usuarios.py +++ b/libpythonpro/tests/test_spam/test_usuarios.py @@ -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)