def test_book_information_by_title(self): Library(self.store, ["Fantasy", "Thriller"]) self.add_books([self.books[0], self.books[1], self.books[2]], Library) book_birds = Library.book_information_by_title("Birds") self.assertEqual([self.books[1], self.books[2]], book_birds) book_somewhere = Library.book_information_by_title("Somewhere") self.assertEqual([self.books[0]], book_somewhere) self.assertEqual([], Library.book_information_by_title("Haha")) os.remove(os.path.realpath(self.store))
def update_table(self): """ Update the table after clicking the Search button. """ self.table.setRowCount(0) self.table.setColumnCount(0) search = self.searchEdit.text() if self.author.isChecked(): results = Library.book_information_by_author(search) elif self.title.isChecked(): results = Library.book_information_by_title(search) else: results = Library.book_information_by_title_author(search) self.table = QtGui.QTableWidget(len(results), 10, self) headers = ("Title", "Author's name", "Published in", "Genre", "Rating", "Copies", "Get", "Return", "Like", " Dislike") self.table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers) self.table.setHorizontalHeaderLabels(headers) self.table.resizeColumnsToContents() self.table.resizeRowsToContents() widths = [150, 150, 90, 80, 70, 60, 50, 60, 50, 70] for col, width in zip(range(9), widths): self.table.setColumnWidth(col, width) self.table.horizontalHeader().setStretchLastSection(True) for row in range(len(results)): book = results[row] col = 0 for column in (book.title, book.author, book.year, book.genre, book.rating, book.number_of_copies): item = QtGui.QTableWidgetItem(str(column)) self.table.setItem(row, col, item) col += 1 for row in range(len(results)): get_btn = QtGui.QPushButton("Get") get_btn.setMinimumSize(50, 30) get_btn.clicked.connect(partial(self.get_a_copy, row)) self.table.setCellWidget(row, 6, get_btn) return_btn = QtGui.QPushButton("Return") return_btn.setMinimumSize(50, 30) return_btn.clicked.connect(partial(self.return_a_copy, row)) self.table.setCellWidget(row, 7, return_btn) like_btn = QtGui.QPushButton("Like") like_btn.setMinimumSize(50, 30) like_btn.clicked.connect(partial(self.like_a_book, row)) self.table.setCellWidget(row, 8, like_btn) dislike_btn = QtGui.QPushButton("Dislike") dislike_btn.setMinimumSize(50, 30) dislike_btn.clicked.connect(partial(self.dislike_a_book, row)) self.table.setCellWidget(row, 9, dislike_btn) self.grid.addWidget(self.table, 1, 0)