| 497 | print "pattern.db.Table.fields" |
| 498 | |
| 499 | def test_insert_update_delete(self): |
| 500 | # Assert Table.insert(). |
| 501 | v1 = self.db.persons.insert(name=u"Kurt Gödel") |
| 502 | v2 = self.db.products.insert(name="pizza", price=10.0) |
| 503 | v3 = self.db.products.insert({"name":"garlic bread", "price":3.0}) |
| 504 | v4 = self.db.orders.insert(person=v1, product=v3) |
| 505 | self.assertEqual(v1, 1) |
| 506 | self.assertEqual(v2, 1) |
| 507 | self.assertEqual(v3, 2) |
| 508 | self.assertEqual(v4, 1) |
| 509 | self.assertEqual(self.db.persons.rows(), [(1, u"Kurt Gödel")]) |
| 510 | self.assertEqual(self.db.products.rows(), [(1, u"pizza", 10.0), (2, u"garlic bread", 3.0)]) |
| 511 | self.assertEqual(self.db.orders.rows(), [(1, 1, 2)]) |
| 512 | self.assertEqual(self.db.orders.count(), 1) |
| 513 | self.assertEqual(self.db.products.xml.replace(' extra="auto_increment"', ""), |
| 514 | '<?xml version="1.0" encoding="utf-8"?>\n' |
| 515 | '<table name="products" fields="id, name, price" count="2">\n' |
| 516 | '\t<schema>\n' |
| 517 | '\t\t<field name="id" type="integer" index="primary" optional="no" />\n' |
| 518 | '\t\t<field name="name" type="string" length="100" />\n' |
| 519 | '\t\t<field name="price" type="float" default="0.0" />\n' |
| 520 | '\t</schema>\n' |
| 521 | '\t<rows>\n' |
| 522 | '\t\t<row id="1" name="pizza" price="10.0" />\n' |
| 523 | '\t\t<row id="2" name="garlic bread" price="3.0" />\n' |
| 524 | '\t</rows>\n' |
| 525 | '</table>' |
| 526 | ) |
| 527 | # Assert transactions with commit=False. |
| 528 | if self.db.type == db.SQLITE: |
| 529 | self.db.orders.insert(person=v1, product=v2, commit=False) |
| 530 | self.db.rollback() |
| 531 | self.assertEqual(len(self.db.orders), 1) |
| 532 | self.db.orders.insert(person=v1, product=v2, commit=False) |
| 533 | # Assert Table.update(). |
| 534 | self.db.products.update(2, price=4.0) |
| 535 | self.db.products.update(2, {"price":4.5}) |
| 536 | self.db.products.update(db.all(db.filter("name", "pi*")), name="deeppan pizza") |
| 537 | self.assertEqual(self.db.products.rows(), [(1, u"deeppan pizza", 10.0), (2, u"garlic bread", 4.5)]) |
| 538 | # Assert Table.delete(). |
| 539 | self.db.products.delete(db.all(db.filter("name", "deeppan*"))) |
| 540 | self.db.products.delete(db.ALL) |
| 541 | self.db.orders.delete(1) |
| 542 | self.assertEqual(len(self.db.products), 0) |
| 543 | self.assertEqual(len(self.db.orders), 1) |
| 544 | print "pattern.db.Table.insert()" |
| 545 | print "pattern.db.Table.update()" |
| 546 | print "pattern.db.Table.delete()" |
| 547 | |
| 548 | def test_filter(self): |
| 549 | # Assert Table.filter(). |