Created
September 29, 2022 18:33
-
-
Save johndoe46/17eacf0f12772dfb870732479b91dc72 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import unittest | |
from pybean import SQLiteWriter, Store | |
import resource | |
def memory_usage(): | |
return resource.getrusage(resource.RUSAGE_SELF).ru_maxrss | |
class TestPybean(unittest.TestCase): | |
def setUp(self): | |
pass | |
def test_unknown_column(self): | |
db = self.get_fluid_save() | |
try: | |
db.find("book","doesntexist = 1").next() | |
self.assertTrue(False) | |
except StopIteration: | |
self.assertTrue(True) | |
def test_boolean(self): | |
return | |
db = self.get_fluid_save() | |
book = db.new("book") | |
book.title = "another title" | |
book.published = True | |
db.save(book) | |
for book in db.find("book"): | |
self.assertTrue(book.published is True) | |
def get_frozen_save(self): | |
return Store(SQLiteWriter(":memory:")) | |
def get_fluid_save(self): | |
return Store(SQLiteWriter(":memory:", False)) | |
def test_new_bean_type(self): | |
bean = self.get_frozen_save().new("book") | |
self.assertEqual(bean.__class__.__name__, "book") | |
def test_bean_save(self): | |
db = self.get_fluid_save() | |
bean = db.new("book") | |
bean.title = "mac beth" | |
bean.year = 1606 | |
db.save(bean) | |
def test_get_linked(self): | |
db = self.get_fluid_save() | |
book = db.new("book") | |
book.title = "a book with many authors" | |
author1 = db.new("author") | |
author1.name = "john doe" | |
author2 = db.new("author") | |
author2.name = "jane doe" | |
book2 = db.new("book") | |
book.title = "a book with one author" | |
author3 = db.new("author") | |
author3.name = "shouldnotseeme" | |
db.link(book2, author3) | |
db.link(book, author1) | |
db.link(book, author2) | |
for author in db.get_linked(book, "author"): | |
self.assertNotEqual(author.name, "shouldnotseeme") | |
self.assertTrue(author.name in ["john doe", "jane doe"]) | |
def test_find(self): | |
db = self.get_fluid_save() | |
book = db.new("book") | |
book.title = "test book" | |
db.save(book) | |
for book in db.find("book"): | |
self.assertEqual(book.title, "test book") | |
def test_find_one(self): | |
db = self.get_fluid_save() | |
book = db.new("book") | |
book.title = "the one and only" | |
db.save(book) | |
book = db.find_one("book") | |
self.assertEqual(book.title, "the one and only") | |
doesnt_exist = db.find_one("book","title like ?",["azeazeaze"]) | |
self.assertTrue(doesnt_exist is None) | |
def test_find_sql(self): | |
db = self.get_fluid_save() | |
book1 = db.new("book") | |
book1.title = "tests book1" | |
db.save(book1) | |
book2 = db.new("book") | |
book2.title = "test book2" | |
db.save(book2) | |
for book in db.find("book", "title like ?",["%book2%"]): | |
self.assertEqual(book.title, "test book2") | |
def test_count(self): | |
db = self.get_fluid_save() | |
self.assertEqual(db.count("book"), 0) | |
book1 = db.new("book") | |
book1.title = "title1" | |
book2 = db.new("book") | |
book2.title = "title2" | |
db.save(book1) | |
db.save(book2) | |
self.assertEqual(db.count("book"), 2) | |
self.assertEqual(db.count("book", "title like ?", ["title1"]), 1) | |
def test_iterator_exception(self): | |
for row in self.get_frozen_save().writer.get_rows("pouet"): | |
print row | |
if __name__ == '__main__': | |
unittest.main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment