blob: 3d76bc465ef0ecfc54b24d8eff557c11595f6df0 [file] [log] [blame]
# SPDX-License-Identifier: MPL-2.0
# Copyright (c) 2022 Philipp Le <philipp@philipple.de>.
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
import unittest
from typing import List
from pydantic import BaseModel
from dcs.config.store import Store, ConfigObject
class ExampleSub(BaseModel):
id: int
title: str
class ExampleConfig(ConfigObject):
_KEY = 'example'
id: int
name: str
sub: List[ExampleSub]
class StoreTest(unittest.TestCase):
def test_deserialize(self):
in_data = {
'example': {
'id': 1,
'name': 'Test1',
'sub': [
{
'id': 0,
'title': 'Title1',
},
{
'id': 1,
'title': 'Title2',
},
]
}
}
loaded_store = Store.load_obj(in_data, 'default')
store = Store.get_instance('default')
self.assertEqual(id(loaded_store), id(store))
cfg = store.get_config(ExampleConfig)
self.assertEqual(ExampleConfig, type(cfg))
self.assertEqual(2, len(cfg.sub))
self.assertEqual(ExampleSub, type(cfg.sub[0]))
self.assertEqual(ExampleSub, type(cfg.sub[1]))
sub0 = cfg.sub[0]
self.assertEqual(id(cfg.sub[0]), id(sub0))
self.assertEqual(id(cfg), id(store.get_config(ExampleConfig)))
self.assertEqual(in_data, store.dump_obj())