isso/specs/test_db.py

104 lines
2.5 KiB
Python
Raw Normal View History

2012-10-16 17:11:59 +00:00
2012-10-16 17:32:55 +00:00
import os
2012-10-16 19:04:20 +00:00
import time
2012-10-16 17:11:59 +00:00
import tempfile
import unittest
2012-10-16 19:07:29 +00:00
from isso.models import Comment
2012-10-16 17:11:59 +00:00
from isso.db import SQLite
class TestSQLite(unittest.TestCase):
def setUp(self):
2012-10-16 17:32:55 +00:00
fd, self.path = tempfile.mkstemp()
self.db = SQLite(self.path, False)
2012-10-16 17:11:59 +00:00
def test_get(self):
2013-09-08 11:02:25 +00:00
rv = self.db.add('/', Comment(text='Spam'), '')
c = self.db.get('/', rv["id"])
2013-09-08 11:02:25 +00:00
assert c["id"] == 1
assert c["text"] == 'Spam'
2012-10-16 17:11:59 +00:00
def test_add(self):
2013-09-08 11:02:25 +00:00
self.db.add('/', Comment(text='Foo'), '')
self.db.add('/', Comment(text='Bar'), '')
self.db.add('/path/', Comment(text='Baz'), '')
2012-10-16 17:11:59 +00:00
rv = list(self.db.retrieve('/'))
2013-09-08 11:02:25 +00:00
assert rv[0]["id"] == 1
assert rv[0]["text"] == 'Foo'
2012-10-16 17:11:59 +00:00
2013-09-08 11:02:25 +00:00
assert rv[1]["id"] == 2
assert rv[1]["text"] == 'Bar'
2012-10-16 17:11:59 +00:00
rv = list(self.db.retrieve('/path/'))
2013-09-08 11:02:25 +00:00
assert rv[0]["id"] == 1
assert rv[0]["text"] == 'Baz'
2012-10-16 17:11:59 +00:00
def test_add_return(self):
2013-09-08 11:02:25 +00:00
self.db.add('/', Comment(text='1'), '')
self.db.add('/', Comment(text='2'), '')
2013-09-08 11:02:25 +00:00
assert self.db.add('/path/', Comment(text='1'), '')["id"] == 1
def test_update(self):
2013-09-08 11:02:25 +00:00
rv = self.db.add('/', Comment(text='Foo'), '')
2012-10-16 19:04:20 +00:00
time.sleep(0.1)
2013-09-08 11:02:25 +00:00
rv = self.db.update('/', rv["id"], {"text": "Bla"})
c = self.db.get('/', rv["id"])
2013-09-08 11:02:25 +00:00
assert c["id"] == 1
assert c["text"] == 'Bla'
assert c["created"] < c["modified"]
def test_delete(self):
2013-09-08 11:02:25 +00:00
rv = self.db.add('/', Comment(
text='F**CK', author='P*NIS', website='http://somebadhost.org/'), '')
2013-09-08 11:02:25 +00:00
assert self.db.delete('/', rv["id"]) == None
2012-10-24 18:09:22 +00:00
def test_recent(self):
2013-09-08 11:02:25 +00:00
self.db.add('/path/', Comment(text='2'), '')
2012-10-24 18:09:22 +00:00
for x in range(5):
2013-09-08 11:02:25 +00:00
self.db.add('/', Comment(text='%i' % (x+1)), '')
2012-10-24 18:09:22 +00:00
assert len(list(self.db.recent(mode=7))) == 6
assert len(list(self.db.recent(mode=7, limit=5))) == 5
2012-10-16 17:11:59 +00:00
def tearDown(self):
2012-10-16 17:32:55 +00:00
os.unlink(self.path)
class TestSQLitePending(unittest.TestCase):
def setUp(self):
fd, self.path = tempfile.mkstemp()
self.db = SQLite(self.path, True)
def test_retrieve(self):
2013-09-08 11:02:25 +00:00
self.db.add('/', Comment(text='Foo'), '')
assert len(list(self.db.retrieve('/'))) == 0
def test_activate(self):
2013-09-08 11:02:25 +00:00
self.db.add('/', Comment(text='Foo'), '')
self.db.add('/', Comment(text='Bar'), '')
self.db.activate('/', 2)
assert len(list(self.db.retrieve('/'))) == 1
assert len(list(self.db.retrieve('/', mode=3))) == 2
def tearDown(self):
os.unlink(self.path)