~lifeless/storm/bug-620615

« back to all changes in this revision

Viewing changes to tests/databases/sqlite.py

  • Committer: Gustavo Niemeyer
  • Date: 2006-05-15 13:35:14 UTC
  • Revision ID: gustavo@niemeyer.net-20060515133514-26229d11547e312e
- Implemented And, Or, and Parameter expressions.
- Implemented basic parameter support in Compiler.
- Started Database, Connection and Result implementations.
- Started sqlite database backend.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from pysqlite2 import dbapi2 as sqlite
 
2
 
 
3
from storm.databases.sqlite import SQLite
 
4
from storm.database import *
 
5
 
 
6
from tests.helper import TestHelper, MakePath
 
7
 
 
8
 
 
9
class SQLiteMemoryTest(TestHelper):
 
10
 
 
11
    helpers = [MakePath]
 
12
    
 
13
    def setUp(self):
 
14
        TestHelper.setUp(self)
 
15
        self.setup_database()
 
16
 
 
17
    def setup_database(self):
 
18
        self.database = SQLite()
 
19
 
 
20
    def add_sample_data(self, connection):
 
21
        connection.execute("CREATE TABLE test (id INT PRIMARY KEY, title VARCHAR)")
 
22
        connection.execute("INSERT INTO test VALUES (1, 'Title 1')")
 
23
        connection.execute("INSERT INTO test VALUES (2, 'Title 2')")
 
24
 
 
25
    def test_create(self):
 
26
        self.assertTrue(isinstance(self.database, Database))
 
27
        
 
28
    def test_connection(self):
 
29
        connection = self.database.connect()
 
30
        self.assertTrue(isinstance(connection, Connection))
 
31
 
 
32
    def test_execute_result(self):
 
33
        connection = self.database.connect()
 
34
        result = connection.execute("SELECT 1")
 
35
        self.assertTrue(isinstance(result, Result))
 
36
 
 
37
    def test_execute_params(self):
 
38
        connection = self.database.connect()
 
39
        result = connection.execute("SELECT 1 WHERE 1=?", (1,))
 
40
        self.assertTrue(result.fetch_one())
 
41
        result = connection.execute("SELECT 1 WHERE 1=?", (2,))
 
42
        self.assertFalse(result.fetch_one())
 
43
 
 
44
    def test_fetch_one(self):
 
45
        connection = self.database.connect()
 
46
        self.add_sample_data(connection)
 
47
        result = connection.execute("SELECT * FROM test ORDER BY id")
 
48
        self.assertEquals(result.fetch_one(), (1, "Title 1"))
 
49
 
 
50
    def test_fetch_all(self):
 
51
        connection = self.database.connect()
 
52
        self.add_sample_data(connection)
 
53
        result = connection.execute("SELECT * FROM test ORDER BY id")
 
54
        self.assertEquals(result.fetch_all(), [(1, "Title 1"), (2, "Title 2")])
 
55
 
 
56
    def test_iter(self):
 
57
        connection = self.database.connect()
 
58
        self.add_sample_data(connection)
 
59
        result = connection.execute("SELECT * FROM test ORDER BY id")
 
60
        self.assertEquals([item for item in result],
 
61
                          [(1, "Title 1"), (2, "Title 2")])
 
62
 
 
63
class SQLiteFileTest(SQLiteMemoryTest):
 
64
    
 
65
    def setup_database(self):
 
66
        self.database = SQLite(self.make_path())
 
67
 
 
68
    # Test iterating over two connections at the same time.
 
69