mirror of
https://github.com/samsonjs/vdirsyncer.git
synced 2026-03-25 08:55:50 +00:00
60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
'''
|
|
tests.storage.test_singlefile
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
:copyright: (c) 2014 Markus Unterwaditzer & contributors
|
|
:license: MIT, see LICENSE for more details.
|
|
'''
|
|
|
|
import pytest
|
|
|
|
from vdirsyncer.storage.singlefile import SingleFileStorage
|
|
|
|
from . import BaseStorageTests
|
|
from .. import assert_item_equals
|
|
|
|
|
|
class TestSingleFileStorage(BaseStorageTests):
|
|
|
|
storage_class = SingleFileStorage
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def setup(self, tmpdir):
|
|
self._path = str(tmpdir.join('test.txt'))
|
|
|
|
@pytest.fixture
|
|
def get_storage_args(self):
|
|
def inner(**kwargs):
|
|
kwargs.update(path=self._path)
|
|
return kwargs
|
|
return inner
|
|
|
|
def test_collection_arg(self, tmpdir):
|
|
with pytest.raises(ValueError):
|
|
self.storage_class(str(tmpdir.join('foo.ics')), collection='ha')
|
|
|
|
def test_create_arg(self, tmpdir):
|
|
s = self.storage_class(str(tmpdir) + '/foo.ics')
|
|
assert not s.list()
|
|
|
|
s.create = False
|
|
with pytest.raises(IOError):
|
|
s.list()
|
|
|
|
with pytest.raises(IOError):
|
|
s = self.storage_class(str(tmpdir) + '/foo.ics', create=False)
|
|
|
|
def test_update(self, s, get_item):
|
|
'''The original testcase tries to fetch with the old href. But this
|
|
storage doesn't have real hrefs, so the href might change if the
|
|
underlying UID changes. '''
|
|
|
|
item = get_item()
|
|
href, etag = s.upload(item)
|
|
assert_item_equals(s.get(href)[0], item)
|
|
|
|
new_item = get_item()
|
|
s.update(href, new_item, etag)
|
|
((new_href, new_etag),) = s.list()
|
|
assert_item_equals(s.get(new_href)[0], new_item)
|