diff --git a/exercicios/para-casa/Projeto Guiado II/Book.ipynb b/exercicios/para-casa/Projeto Guiado II/Book.ipynb new file mode 100644 index 0000000..7766ee3 --- /dev/null +++ b/exercicios/para-casa/Projeto Guiado II/Book.ipynb @@ -0,0 +1,33 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "kWQndQRb5jbw" + }, + "outputs": [], + "source": [ + "class Book:\n", + " def __init__(self, name, author):\n", + " self.name = name\n", + " self.author = author\n", + " self.book.borrowed = False" + ] + } + ] +} \ No newline at end of file diff --git a/exercicios/para-casa/Projeto Guiado II/Library.ipynb b/exercicios/para-casa/Projeto Guiado II/Library.ipynb new file mode 100644 index 0000000..5e1b486 --- /dev/null +++ b/exercicios/para-casa/Projeto Guiado II/Library.ipynb @@ -0,0 +1,66 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2EETCSQKJjhu" + }, + "outputs": [], + "source": [ + "from Book import Book\n", + "\n", + "class Library:\n", + " def __init__(self):\n", + " self.books = []\n", + "\n", + " def add_book(self, book: Book):\n", + " if (not isinstance(book, Book)):\n", + " raise TypeError(f\"Expected Book, received value {book} of type {type(book)}\")\n", + " self.books.append(book)\n", + "\n", + " def show_books(self):\n", + " return self.books\n", + "\n", + " def borrow_book(self, title):\n", + " for book in self.books:\n", + " if book.name == title and not book.borrowed:\n", + " book.borrowed = True\n", + "\n", + " def remove_book(self, title):\n", + " for book in self.books:\n", + " if book.name == title:\n", + " self.books.remove(book)\n", + "\n", + " def find_book(self, title):\n", + " message = \"Book not found.\"\n", + " for book in self.books:\n", + " if book.name == title:\n", + " message = book\n", + " return message\n", + "\n", + " def return_livro(self, title):\n", + " message = \"Book not found.\"\n", + " for book in self.books:\n", + " if book.name == title:\n", + " book.borrowed = False\n", + " message = f\"Book returned: {book}\"\n", + " return message" + ] + } + ] +} \ No newline at end of file diff --git a/exercicios/para-casa/Projeto Guiado II/LibraryTest.ipynb b/exercicios/para-casa/Projeto Guiado II/LibraryTest.ipynb new file mode 100644 index 0000000..4f257c9 --- /dev/null +++ b/exercicios/para-casa/Projeto Guiado II/LibraryTest.ipynb @@ -0,0 +1,105 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "P7SHX3hl2znl" + }, + "outputs": [], + "source": [ + "from unittest import TestCase\n", + "from Library import Library\n", + "from Book import Book\n", + "\n", + "class TestLibrary(TestCase):\n", + " def setUp(self):\n", + " self.library = Library()\n", + " self.book1 = Book(\"Siddhartha\", \"Hermann Hesse\")\n", + " self.book2 = Book(\"The Desert of the Tartars\", \"Dino Buzzati\")\n", + "\n", + " def test_init_should_pass(self):\n", + " self.assertIsInstance(self.library.books, list)\n", + "\n", + " def test_add_book_should_pass(self):\n", + " book_name = \"Cosmos\"\n", + " book_author = \"Carl Sagan\"\n", + " book = Book(book_name, book_author)\n", + "\n", + " self.library.add_book(book)\n", + "\n", + " self.assertEqual(1, len(self.library.books))\n", + "\n", + " def test_add_book_should_not_insert_number(self):\n", + " book = 1980\n", + "\n", + " with self.assertRaises(TypeError):\n", + " self.library.add_book(book)\n", + "\n", + " def test_show_books(self):\n", + " self.library.add_book(self.book1)\n", + " self.library.add_book(self.book2)\n", + " library_list = [self.book1, self.book2]\n", + "\n", + " self.assertEqual(self.library.show_books(), library_list)\n", + "\n", + " def test_borrow_books(self):\n", + " self.library.add_book(self.book1)\n", + " self.library.add_book(self.book2)\n", + "\n", + " self.library.book_borrowed(\"Siddhartha\")\n", + " self.library.book_borrowed(\"The Desert of the Tartars\")\n", + "\n", + " self.assertTrue(self.book1.book_borrowed)\n", + " self.assertTrue(self.book2.book_borrowed)\n", + "\n", + " def test_remove_book(self):\n", + " self.library.add_book(self.book1)\n", + " self.library.add_book(self.book2)\n", + "\n", + " self.library.remove_book(\"Siddhartha\")\n", + "\n", + " self.assertIsNot(self.library.books, self.book1)\n", + "\n", + " def test_search_existing_book(self):\n", + " self.library.add_book(self.book1)\n", + " self.library.add_book(self.book2)\n", + "\n", + " search_book = self.library.search_book(\"Siddhartha\")\n", + "\n", + " self.assertEqual(search_book, self.book1)\n", + "\n", + " def test_search_nonexistent_book(self):\n", + " self.library.add_book(self.book1)\n", + "\n", + " search_book = self.library.search_book(\"The Desert of the Tartars\")\n", + "\n", + " self.assertEqual(search_book, \"Book not found.\")\n", + "\n", + " def test_return_book(self):\n", + " self.library.add_book(self.book1)\n", + " self.library.add_book(self.book2)\n", + " self.library.book_borrowed(\"Siddhartha\")\n", + " self.library.book_borrowed(\"The Desert of the Tartars\")\n", + "\n", + " self.library.return_book(\"The Desert of the Tartars\")\n", + "\n", + " self.assertFalse(self.book2.book_borrowed)\n" + ] + } + ] +} \ No newline at end of file diff --git a/exercicios/para-casa/Projeto Guiado II/TestBook.ipynb b/exercicios/para-casa/Projeto Guiado II/TestBook.ipynb new file mode 100644 index 0000000..75cfee2 --- /dev/null +++ b/exercicios/para-casa/Projeto Guiado II/TestBook.ipynb @@ -0,0 +1,54 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "HZ0ol3P2Hkxp" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "sU0taxfw9Ory" + }, + "outputs": [], + "source": [ + "from unittest import TestCase\n", + "from Library import Library\n", + "\n", + "\n", + "class testBook(TestCase):\n", + " def test_init_pass(self):\n", + "\n", + " name = 'Siddhartha'\n", + " author = 'Hermann Hesse'\n", + "\n", + "\n", + " book = Book(name, author)\n", + "\n", + "\n", + " self.assertEqual(name, book.name)\n", + " self.assertEqual(author, book.author)\n", + " self.assertEqual(False, book.borrowed)" + ] + } + ] +} \ No newline at end of file diff --git a/exercicios/para-casa/README.md b/exercicios/para-casa/README.md deleted file mode 100644 index 7fe0dc6..0000000 --- a/exercicios/para-casa/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Exercício de Casa 🏠 - -## Criar método remove_book -Critérios de aceitação: -- O método deve ter ao menos 1 (um) teste associado -- O método deve receber como parâmetro o nome do livro e remover da propriedade Books -- O método deve remover apenas 1 (um) livro por vez -- Caso o livro não seja encontrado o método não deve dar erro ou exceções -- Apenas livros não emprestados podem ser removidos (opcional) - -## Criar método search_book -Critérios de aceitação: -- O método deve ter ao menos 1 (um) teste associado -- O método deve receber como parâmetro o nome do livro a ser buscado e retornar o nome do livro, autor e informação se livro está disponível ou emprestado -- Caso o livro não seja encontrado o método deve retornar a mensagem "Livro não encontrado" - -## Criar método return_book -Critérios de aceitação: -- O método deve ter ao menos 1 (um) teste associado -- O método deve receber como parâmetro o nome do livro a ser devolvido e mudar o status do livro para não emprestado na propriedade Books -- Caso o livro não seja encontrado o método deve apenas exibir a mensagem "Livro não encontrado" - ---- - -Terminou o exercício? Dá uma olhada nessa checklist e confere se tá tudo certinho, combinado?! - -- [ ] Fiz o fork do repositório. -- [ ] Clonei o fork na minha máquina (`git clone url-do-meu-fork`). -- [ ] Resolvi o exercício. -- [ ] Adicionei as mudanças. (`git add .` para adicionar todos os arquivos, ou `git add nome_do_arquivo` para adicionar um arquivo específico) -- [ ] Commitei a cada mudança significativa ou na finalização do exercício (`git commit -m "Mensagem do commit"`) -- [ ] Pushei os commits na minha branch (`git push origin nome-da-branch`) -- [ ] Criei um Pull Request seguindo as orientaçoes que estao nesse [documento](https://github.com/reprograma/on26-python-s08-projeto-guiado-II/blob/main/exercicios/para-casa/instrucoes-pull-request.md). diff --git a/exercicios/para-casa/instrucoes-pull-request.md b/exercicios/para-casa/instrucoes-pull-request.md deleted file mode 100644 index f3d096b..0000000 --- a/exercicios/para-casa/instrucoes-pull-request.md +++ /dev/null @@ -1,31 +0,0 @@ -# Como criar meu Pull Request? 🤔 - -Olá, meninas!
-O checklist da atividade ta todo preenchido? Entao agora tá na hora de fazer nosso pull request para o repositório original.
-Você deverá navegar até o seu repositório onde você fez o fork e pressionar o botão “New pull request” no lado esquerdo da página.

-![alt](https://assets.digitalocean.com/articles/eng_python/PullRequest/PRButton.png) - -Você poderá modificar a branch na próxima tela. - -Depois de ter escolhido a branch main do repositório original no lado esquerdo, e a nova-branch do seu fork do lado direito, você deve ver uma tela assim: - -![alt](https://assets.digitalocean.com/articles/eng_python/PullRequest/PullRequest.png) -

-O GitHub vai lhe alertar de que é possível mesclar as duas branches porque não há código concorrente. Você deve adicionar um título, e um comentário descrevendo o seu PR.

-DICAS:
-1. Você pode seguir esse modelo para o título do seu PR: -``` -Nome da Atividade - Seu nome. -``` -2. Você pode seguir esse modelo para a descrição do seu PR: -``` -O que? -Resolução dos exercícios de lógica. - -Como? -* Adicionei um arquivo para resolver a atividade 1 utilizando os métodos slice e split; -* Adicionei casos de testes unitários para cada um dos exercícios utilizando jest; -* Outro ponto que você queira adicionar. -``` -Feito isso, é so clicar em “Create pull request”.

-Tcharaaaannn! Agora é só esperar a prof revisar seu PR 💜