-
Notifications
You must be signed in to change notification settings - Fork 38
projeto_semana_08_Lais #30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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): | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Aqui está no caminho certo! Mas que acha dessa sugestão de algoritmo?
|
||
| if self.emprestar_livro is False: | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Aqui vc está fazendo uma coisa interessante, vc já viu o conceito de recursividade ou recursão? Um site que ajuda muito a entender a lógica é o https://pythontutor.com/ |
||
| return | ||
|
|
||
| self.emprestar_livro = True | ||
| print('O livro {} não está disponível para empréstimo') | ||
| # raise NotImplementedError | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| #Arquivo que faz com que o python consiga enxergar os arquivos como módulos |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Muito bacana que utilizou comentários para se organizar e documentar o que está sendo feito no código! |
||
| # 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') | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. <3 |
||
| 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) | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Aqui nessa linha, vc estaria limpando a a lista de livros toda vez que vai exibir os livros, talvez isso não seja necessário aqui (mas poderia ter um método de exclui_todos_livros, talvez? pode ser interessante)
Aqui bastaria retornar a lista como ela se encontra mesmo☺️