diff --git a/exercicios/para-casa/Biblioteca.py b/exercicios/para-casa/Biblioteca.py new file mode 100644 index 0000000..30d8b76 --- /dev/null +++ b/exercicios/para-casa/Biblioteca.py @@ -0,0 +1,25 @@ +from Livro import Livro + +class Biblioteca : + def __init__(self): + self.livros = [] # propriedade declarada + + def adicionar_livro(self, livro: Livro): # o parametrô livro é do tipo classe Livro + # raise NotImplementedError -> não precisamos mais do método de exceção pois agora temos um comportamento: + if (not isinstance(livro, Livro)): + raise TypeError('mensagem de erro') + self.livros.append(livro) + + def exibir_livro(self, livro: Livro): + # raise NotImplementedError + self.livros = [] + print(livro) + + def emprestar_livro(self): + if self.emprestar_livro is False: + return + + self.emprestar_livro = True + print('O livro {} não está disponível para empréstimo') + # raise NotImplementedError + diff --git a/exercicios/para-casa/Livro.py b/exercicios/para-casa/Livro.py new file mode 100644 index 0000000..f617d95 --- /dev/null +++ b/exercicios/para-casa/Livro.py @@ -0,0 +1,5 @@ +class Livro: + def __init__(self, nome, autor, emprestado = False): # parâmetros que a classe vai receber + self.nome = nome + self.autor = autor + self.esta_Emprestado = emprestado # valor padrão do começo \ No newline at end of file diff --git a/exercicios/para-casa/__init__.py b/exercicios/para-casa/__init__.py new file mode 100644 index 0000000..5460cdf --- /dev/null +++ b/exercicios/para-casa/__init__.py @@ -0,0 +1 @@ +#Arquivo que faz com que o python consiga enxergar os arquivos como módulos \ No newline at end of file diff --git a/exercicios/para-casa/testBiblioteca.py b/exercicios/para-casa/testBiblioteca.py new file mode 100644 index 0000000..b5d3a10 --- /dev/null +++ b/exercicios/para-casa/testBiblioteca.py @@ -0,0 +1,66 @@ +from unittest import TestCase #Desta forma, importamos apenas o TestCase dentro de tudo que tem no unittest +from Biblioteca import Biblioteca +from Livro import Livro + +class TestBiblioteca(TestCase): #Especificamos que essa classe irá conter testes + def setUp(self): + self.biblioteca = Biblioteca() + # self.livro = Livro() + + def test_init_deve_passar(self): #Precisamos começar os casos de teste sempre com o prefixo test + #Arrange -> queremos chamar a nossa Biblioteca / Act + # biblioteca = Biblioteca() + #Assert + self.assertIsInstance(self.biblioteca.livros, list) + + def test_adicionar_livro_deve_passar(self): + #Arrange + # biblioteca = Biblioteca() + nome_livro = 'A coragem de ser imperfeito' + autor_livro = 'Brené Brown' + livro = Livro(nome = nome_livro, autor = autor_livro) + self.biblioteca.adicionar_livro(livro) + # neste momento foi preciso importar a classe Livro + # adicionei os parâmetros que ele espera + #Act + # biblioteca.adicionar_livro(livro) + # chamamos a biblioteca.adicionar_livro e esperamos receber um livro + # após criar as variáveis nome_livro, autor_livro e livro, inserimos estas variáveis no nosso método adicionar_livro + #Assert + self.assertEqual(1, len(self.biblioteca.livros)) # esperamos que o tamanho da nossa lista de livros seja 1 pois adicionamos 1 livro até aqui + # ao rodar o teste com esse método pela primeira vez, caímos no erro NotImplementedError + + def test_adicionar_livro_nao_deve_inserir_numero(self): + #Arrange + # biblioteca = Biblioteca() + livro = 1988 + #Act + # inicialmente o teste passou mesmo o valor atríbuido à variável livro sendo um número + #Assert + # self.assertRaises() + with self.assertRaises(TypeError): + self.biblioteca.adicionar_livro(livro) + + def test_exibir_livro_deve_passar(self): + #Arrange + livro_nome = 'A pedagogia do oprimido' + livro_autor = 'Paulo Freire' + livro = Livro(livro_nome, livro_autor) + self.biblioteca.adicionar_livro(livro) + #Act + self.biblioteca.exibir_livro(livro) + #Assert + self.assertEqual(livro_nome, 'A pedagogia do oprimido') + self.assertEqual(livro_autor, 'Paulo Freire') + + def test_livro_esta_emprestado(self): + self.biblioteca.emprestar_livro() + #Arrange + # self.livro = Livro(nome='Dom Casmurro', autor='Machado de Assis', emprestado=True) + self.nome = 'Dom Casmurro' + self.autor = 'Machado de Assis' + self.esta_Emprestado = True + #Act + # quero saber se o livro está emprestado + #Assert + self.assertTrue(self.esta_Emprestado) \ No newline at end of file diff --git a/exercicios/para-casa/testLivro.py b/exercicios/para-casa/testLivro.py new file mode 100644 index 0000000..7de886d --- /dev/null +++ b/exercicios/para-casa/testLivro.py @@ -0,0 +1,15 @@ +from unittest import TestCase +from Livro import Livro + +class TestLivro(TestCase): + def test_init_deve_passar(self): + #Arrange # configuração + nome = 'A pedagogia da autonomia' + autor = 'Paulo Freire' + + #Act + livro = Livro(nome, autor) # temos uma variável livro do tipo Livro + #Assert + self.assertEqual(nome, livro.nome) + self.assertEqual(autor, livro.autor) + self.assertEqual(False, livro.esta_Emprestado) \ No newline at end of file