Add script_version. Unify copy() method. Use __getitem__() method.

This commit is contained in:
Bob Swift
2021-05-07 12:49:37 -06:00
parent e95781dda9
commit 7ae73f7e12
4 changed files with 65 additions and 51 deletions

View File

@@ -52,97 +52,99 @@ class ScriptClassesTest(PicardTestCase):
def test_script_object_1(self):
# Check initial loaded values.
test_script = PicardScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26')
test_script = PicardScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26', script_version='1.0')
self.assertEqual(test_script.id, '12345')
self.assertEqual(test_script.get_value('id'), '12345')
self.assertEqual(test_script['id'], '12345')
self.assertEqual(test_script.last_updated, '2021-04-26')
self.assertEqual(test_script.get_value('last_updated'), '2021-04-26')
self.assertEqual(test_script.to_json(), '{"script": "Script text", "title": "Script 1"}')
self.assertEqual(test_script['last_updated'], '2021-04-26')
self.assertEqual(test_script.to_json(), '{"script": "Script text", "script_version": "1.0", "title": "Script 1"}')
def test_script_object_2(self):
# Check updating values directly so as not to modify `last_updated`.
test_script = PicardScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26')
test_script.id = '54321'
self.assertEqual(test_script.id, '54321')
self.assertEqual(test_script.get_value('id'), '54321')
self.assertEqual(test_script['id'], '54321')
self.assertEqual(test_script.last_updated, '2021-04-26')
self.assertEqual(test_script.get_value('last_updated'), '2021-04-26')
self.assertEqual(test_script['last_updated'], '2021-04-26')
test_script.title = 'Updated Script 1'
self.assertEqual(test_script.title, 'Updated Script 1')
self.assertEqual(test_script.title, 'Updated Script 1')
self.assertEqual(test_script.get_value('title'), 'Updated Script 1')
self.assertEqual(test_script.get_value('last_updated'), '2021-04-26')
self.assertEqual(test_script['title'], 'Updated Script 1')
self.assertEqual(test_script['last_updated'], '2021-04-26')
def test_script_object_3(self):
# Check updating values that are ignored from modifying `last_updated`.
test_script = PicardScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26')
test_script.update_script_setting(id='54321')
self.assertEqual(test_script.id, '54321')
self.assertEqual(test_script.get_value('id'), '54321')
self.assertEqual(test_script['id'], '54321')
self.assertEqual(test_script.last_updated, '2021-04-26')
self.assertEqual(test_script.get_value('last_updated'), '2021-04-26')
self.assertEqual(test_script['last_updated'], '2021-04-26')
def test_script_object_4(self):
# Check updating values that modify `last_updated`.
test_script = PicardScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26')
test_script.update_script_setting(title='Updated Script 1')
self.assertEqual(test_script.title, 'Updated Script 1')
self.assertEqual(test_script.get_value('title'), 'Updated Script 1')
self.assertEqual(test_script['title'], 'Updated Script 1')
self.assertEqual(test_script.last_updated, '2020-01-02 12:34:56 UTC')
self.assertEqual(test_script.get_value('last_updated'), '2020-01-02 12:34:56 UTC')
self.assertEqual(test_script['last_updated'], '2020-01-02 12:34:56 UTC')
def test_script_object_5(self):
# Check updating values from JSON that modify `last_updated`.
test_script = PicardScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26')
test_script.update_from_json('{"script": "Updated script"}')
self.assertEqual(test_script.script, 'Updated script')
self.assertEqual(test_script.get_value('script'), 'Updated script')
self.assertEqual(test_script['script'], 'Updated script')
self.assertEqual(test_script.last_updated, '2020-01-02 12:34:56 UTC')
self.assertEqual(test_script.get_value('last_updated'), '2020-01-02 12:34:56 UTC')
self.assertEqual(test_script['last_updated'], '2020-01-02 12:34:56 UTC')
def test_script_object_6(self):
# Test that extra (unknown) settings are ignored during updating
test_script = PicardScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26')
test_script = PicardScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26', script_version='1.0')
test_script.update_script_setting(description='Updated description')
self.assertEqual(test_script.get_value('last_updated'), '2021-04-26')
self.assertEqual(test_script.to_json(), '{"script": "Script text", "title": "Script 1"}')
self.assertEqual(test_script['last_updated'], '2021-04-26')
self.assertEqual(test_script.to_json(), '{"script": "Script text", "script_version": "1.0", "title": "Script 1"}')
with self.assertRaises(AttributeError):
print(test_script.description)
def test_script_object_7(self):
# Test that extra (unknown) settings are ignored during updating from JSON string
test_script = PicardScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26')
test_script = PicardScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26', script_version='1.0')
test_script.update_from_json('{"description": "Updated description"}')
self.assertEqual(test_script.get_value('last_updated'), '2021-04-26')
self.assertEqual(test_script.to_json(), '{"script": "Script text", "title": "Script 1"}')
self.assertEqual(test_script['last_updated'], '2021-04-26')
self.assertEqual(test_script.to_json(), '{"script": "Script text", "script_version": "1.0", "title": "Script 1"}')
with self.assertRaises(AttributeError):
print(test_script.description)
def test_script_object_8(self):
# Test that requested unknown settings return None
test_script = PicardScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26')
self.assertEqual(test_script.get_value('unknown_setting'), None)
self.assertEqual(test_script['unknown_setting'], None)
def test_script_object_9(self):
# Test that an exception is raised when creating or updating using an invalid JSON string
with self.assertRaises(JSONDecodeError):
test_script = PicardScript().create_from_json('Not a JSON string')
test_script = PicardScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26')
test_script = PicardScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26', script_version='1.0')
with self.assertRaises(JSONDecodeError):
test_script.update_from_json('Not a JSON string')
def test_naming_script_object_1(self):
# Check initial loaded values.
test_script = FileNamingScript(title='Script 1', script='Script text', id='12345', last_updated='2021-04-26', description='Script description', author='Script author')
test_script = FileNamingScript(
title='Script 1', script='Script text', id='12345', last_updated='2021-04-26',
description='Script description', author='Script author', script_version='1.0'
)
self.assertEqual(test_script.id, '12345')
self.assertEqual(test_script.get_value('id'), '12345')
self.assertEqual(test_script['id'], '12345')
self.assertEqual(test_script.last_updated, '2021-04-26')
self.assertEqual(test_script.get_value('last_updated'), '2021-04-26')
self.assertEqual(test_script['last_updated'], '2021-04-26')
self.assertEqual(test_script.script, 'Script text')
self.assertEqual(test_script.get_value('script'), 'Script text')
self.assertEqual(test_script['script'], 'Script text')
self.assertEqual(test_script.author, 'Script author')
self.assertEqual(test_script.get_value('author'), 'Script author')
self.assertEqual(test_script['author'], 'Script author')
self.assertEqual(test_script.to_json(),
'{'
'"author": "Script author", '
@@ -150,6 +152,7 @@ class ScriptClassesTest(PicardTestCase):
'"last_updated": "2021-04-26", '
'"license": "", '
'"script": "Script text", '
'"script_version": "1.0", '
'"title": "Script 1", '
'"version": ""'
'}'
@@ -161,6 +164,7 @@ class ScriptClassesTest(PicardTestCase):
' "last_updated": "2021-04-26",\n'
' "license": "",\n'
' "script": "Script text",\n'
' "script_version": "1.0",\n'
' "title": "Script 1",\n'
' "version": ""\n'
'}'