# Copyright (C) 2018-2019 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import shutil import tempfile import unittest import ick2 class FilePersistentStateTests(unittest.TestCase): def setUp(self): self.tempdir = tempfile.mkdtemp() self.state = ick2.FilePersistentState() self.state.set_directory(self.tempdir) def tearDown(self): shutil.rmtree(self.tempdir) def test_returns_dirname(self): self.assertEqual(self.state.get_directory(), self.tempdir) def test_has_no_resources_initially(self): self.assertEqual(self.state.get_resource_ids('silly'), []) def test_has_no_resource_initially(self): with self.assertRaises(ick2.NotFound): self.state.get_resource('silly', '#1') def test_creates_resource(self): as_dict = {'foo': 'bar'} r = ick2.resource_from_dict(as_dict) self.state.write_resource('silly', '#1', r) self.assertTrue(self.state.has_resource('silly', '#1')) self.assertEqual(self.state.get_resource_ids('silly'), ['#1']) r2 = self.state.get_resource('silly', '#1') self.assertTrue(isinstance(r2, ick2.Resource)) self.assertEqual(r.as_dict(), r2.as_dict()) def test_removes_resource(self): as_dict = {'foo': 'bar'} r = ick2.resource_from_dict(as_dict) self.state.write_resource('silly', '#1', r) self.state.remove_resource('silly', '#1') self.assertFalse(self.state.has_resource('silly', '#1')) self.assertEqual(self.state.get_resource_ids('silly'), [])