Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

# -*- coding: utf-8 -*- 

 

import os 

import sys 

import unittest 

 

from pydblite.pydblite import Base 

 

from .common_tests import Generic 

 

test_db_name = 'test_database' 

 

 

class PyDbLiteTestCase(Generic, unittest.TestCase): 

 

    def setUp(self):  # NOQA 

        self.first_record_id = 0 

        filter_db = Base(test_db_name, save_to_file=False) 

        filter_db.create('unique_id', 'name', "active", mode="override") 

        self.filter_db = filter_db 

 

    def tearDown(self):  # NOQA 

        if os.path.isfile(test_db_name): 

            os.remove(test_db_name) 

        elif os.path.isdir(test_db_name): 

            os.rmdir(test_db_name) 

 

    def setup_db_for_filter(self): 

        self.reset_status_values_for_filter() 

        for d in self.status: 

            res = self.filter_db.insert(**d) 

        self.assertEquals(res, 6) 

 

    def test_open(self): 

        db = Base('dummy', save_to_file=False) 

        db.create('name', 'age', 'size') 

        db.insert(name='homer', age=23, size=1.84) 

 

    def test_open_file_with_existing_dir(self): 

        os.mkdir(test_db_name) 

        db = Base(test_db_name, save_to_file=True) 

        # A dir with that name exists 

        self.assertRaises(IOError, db.create, 'unique_id', 'name', "active", mode="open") 

 

    def test_open_existing(self): 

        db = Base(test_db_name, save_to_file=True) 

        db.create('unique_id', 'name', "active", mode="open") 

        db.insert("123", "N", True) 

        db.commit() 

 

        # Just verify that it works to open an existing db. 

        # The column names are ignored, therefore they should 

        # equal the old column names 

        db = Base(test_db_name, save_to_file=True) 

        db.create('unique_id2', 'name2', "active2", mode="open") 

        rec = db.insert("123", "N", True) 

        db.commit() 

        self.assertEqual(db.fields, ['unique_id', 'name', "active"]) 

 

        # mode="override" will overwrite existing db 

        db = Base(test_db_name, save_to_file=True) 

        db.create('unique_id', 'name', "active", mode="override") 

        db.commit() 

        self.assertEqual(len(self.filter_db), 0) 

 

        # Equals passing mode=None 

        self.assertRaises(IOError, db.create, 'unique_id', 'name', "active") 

        self.assertRaises(ValueError, db.create, 'unique_id', 'name', "active", mode="invalidmode") 

 

    def test_open_memory(self): 

        db = Base(":memory:") 

        self.assertFalse(db.save_to_file) 

 

    def test_open_memory_with_existing_filename(self): 

        self.filter_db = Base(test_db_name, save_to_file=True) 

        self.filter_db.create('unique_id', 'name', "active", mode="override") 

        self.filter_db.commit() 

 

        db = Base(test_db_name, save_to_file=False) 

        db.open() 

        self.assertEqual(db.fields, ['unique_id', 'name', "active"]) 

 

        db = Base(test_db_name, save_to_file=False) 

        db.create('unique_id2', 'name2', "active2", mode="override") 

        self.assertEqual(db.fields, ['unique_id2', 'name2', "active2"]) 

 

    def test_insert_list(self): 

        status = (8, "testname", 0) 

 

        # Insert 7 entries 

        rec = self.filter_db.insert(status) 

        self.assertEqual(rec, 0) 

        self.assertEqual(self.filter_db[rec]["unique_id"], status) 

 

    def test_sqlite_compat_insert_list(self): 

        self.filter_db = Base(test_db_name, save_to_file=False, sqlite_compat=True) 

        self.filter_db.create('unique_id', 'name', "active", mode="override") 

        status = [(8, "testname", 0)] 

 

        # Insert 1 entries 

        rec = self.filter_db.insert(status) 

        self.assertEqual(rec, None) 

        self.assertEqual(len(self.filter_db), 1) 

        self.assertEqual(self.filter_db[0]["unique_id"], 8) 

        self.assertEqual(self.filter_db[0]["name"], "testname") 

        self.assertEqual(self.filter_db[0]["active"], 0) 

 

    def test_sqlite_compat(self): 

        db = Base(test_db_name, save_to_file=False, sqlite_compat=True) 

        db.create('unique_id', 'name', "active", mode="open") 

        self.reset_status_values_for_filter() 

 

        # Insert 7 entries 

        res = db.insert(self.status) 

        self.assertEqual(res, None) 

        self.assertEqual(len(db), 7) 

 

        status = [(8, "testname", 0)] 

        res = db.insert(status) 

        self.assertEqual(res, None) 

        self.assertEqual(len(db), 8) 

 

 

125if __name__ == "__main__": 

    sys.path.insert(0, os.getcwd()) 

    suite = unittest.TestSuite() 

    suite.addTest(unittest.makeSuite(PyDbLiteTestCase)) 

    unittest.TextTestRunner().run(suite)