Skip to content
Snippets Groups Projects
Commit 7254ef10 authored by Timm Fitschen's avatar Timm Fitschen
Browse files

Merge branch 'f-messages' into 'dev'

MAINT: refactor _Messages class

See merge request !102
parents 968d234f 5aa3b4dd
No related branches found
No related tags found
1 merge request!102MAINT: refactor _Messages class
Pipeline #38972 passed
...@@ -14,8 +14,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ...@@ -14,8 +14,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### ### Changed ###
* `_Messages` is now `Messages` and inherits from list instead of dict
* `Message.__init__` signature changed and `type` defaults to "Info" now.
* `Message.__eq__` changed. Equality is equality of `type`, `code`, and
`description` now.
### Deprecated ### ### Deprecated ###
* The API of Messages has been simplified and some ways to interact with
messages have been deprecated. Warnings are raised correspondingly.
* `Message.get_code`. Use the `code` property instead.
### Removed ### ### Removed ###
### Fixed ### ### Fixed ###
......
This diff is collapsed.
...@@ -30,7 +30,6 @@ import caosdb as db ...@@ -30,7 +30,6 @@ import caosdb as db
from argparse import ArgumentParser from argparse import ArgumentParser
from argparse import RawDescriptionHelpFormatter from argparse import RawDescriptionHelpFormatter
from _testcapi import raise_exception
__all__ = [] __all__ = []
__version__ = 0.1 __version__ = 0.1
......
...@@ -154,7 +154,7 @@ def test_convert_with_references(): ...@@ -154,7 +154,7 @@ def test_convert_with_references():
obj = convert_to_python_object(r) obj = convert_to_python_object(r)
assert obj.ref.a == 42 assert obj.ref.a == 42
# Parent does not automatically lead to a datatype: # Parent does not automatically lead to a datatype:
assert obj.get_property_metadata("ref").datatype is "bla" assert obj.get_property_metadata("ref").datatype == "bla"
assert obj.ref.has_parent("bla") is True assert obj.ref.has_parent("bla") is True
# Unresolved Reference: # Unresolved Reference:
...@@ -163,7 +163,7 @@ def test_convert_with_references(): ...@@ -163,7 +163,7 @@ def test_convert_with_references():
obj = convert_to_python_object(r) obj = convert_to_python_object(r)
# Parent does not automatically lead to a datatype: # Parent does not automatically lead to a datatype:
assert obj.get_property_metadata("ref").datatype is "bla" assert obj.get_property_metadata("ref").datatype == "bla"
assert isinstance(obj.ref, CaosDBPythonUnresolvedReference) assert isinstance(obj.ref, CaosDBPythonUnresolvedReference)
assert obj.ref.id == 27 assert obj.ref.id == 27
......
...@@ -27,11 +27,14 @@ import caosdb as db ...@@ -27,11 +27,14 @@ import caosdb as db
from copy import deepcopy from copy import deepcopy
import pytest
def test_messages_dict_behavior(): def test_messages_dict_behavior():
from caosdb.common.models import Message from caosdb.common.models import Message
from caosdb.common.models import _Messages from caosdb.common.models import Messages
msgs = _Messages() msgs = Messages()
# create Message # create Message
msg = Message( msg = Message(
...@@ -40,12 +43,12 @@ def test_messages_dict_behavior(): ...@@ -40,12 +43,12 @@ def test_messages_dict_behavior():
description="Greeting the world", description="Greeting the world",
body="Hello, world!") body="Hello, world!")
# append it to the _Messages # append it to the Messages
assert repr(msg) == '<HelloWorld code="1" description="Greeting the world">Hello, world!</HelloWorld>\n' assert repr(msg) == '<HelloWorld code="1" description="Greeting the world">Hello, world!</HelloWorld>\n'
msgs.append(msg) msgs.append(msg)
assert len(msgs) == 1 assert len(msgs) == 1
# use _Messages as list of Message objects # use Messages as list of Message objects
for m in msgs: for m in msgs:
assert isinstance(m, Message) assert isinstance(m, Message)
...@@ -70,10 +73,6 @@ def test_messages_dict_behavior(): ...@@ -70,10 +73,6 @@ def test_messages_dict_behavior():
assert msgs["HelloWorld", 2] == ( assert msgs["HelloWorld", 2] == (
"Greeting the world in German", "Hallo, Welt!") "Greeting the world in German", "Hallo, Welt!")
msgs["HelloWorld", 2] = "Greeting the world in German", "Huhu, Welt!"
assert len(msgs) == 1
assert msgs["HelloWorld", 2] == (
"Greeting the world in German", "Huhu, Welt!")
del msgs["HelloWorld", 2] del msgs["HelloWorld", 2]
assert msgs.get("HelloWorld", 2) is None assert msgs.get("HelloWorld", 2) is None
...@@ -83,11 +82,11 @@ def test_messages_dict_behavior(): ...@@ -83,11 +82,11 @@ def test_messages_dict_behavior():
def test_deepcopy(): def test_deepcopy():
"""Test whether deepcopy of _Messages objects doesn't mess up """Test whether deepcopy of Messages objects doesn't mess up
contained Messages objects. contained Messages objects.
""" """
msgs = db.common.models._Messages() msgs = db.common.models.Messages()
msg = db.Message(type="bla", code=1234, description="desc", body="blabla") msg = db.Message(type="bla", code=1234, description="desc", body="blabla")
msgs.append(msg) msgs.append(msg)
msg_copy = deepcopy(msgs)[0] msg_copy = deepcopy(msgs)[0]
...@@ -102,7 +101,7 @@ def test_deepcopy(): ...@@ -102,7 +101,7 @@ def test_deepcopy():
def test_deepcopy_clear_server(): def test_deepcopy_clear_server():
msgs = db.common.models._Messages() msgs = db.common.models.Messages()
msg = db.Message(type="bla", code=1234, description="desc", body="blabla") msg = db.Message(type="bla", code=1234, description="desc", body="blabla")
err_msg = db.Message(type="Error", code=1357, description="error") err_msg = db.Message(type="Error", code=1357, description="error")
msgs.extend([msg, err_msg]) msgs.extend([msg, err_msg])
...@@ -116,3 +115,18 @@ def test_deepcopy_clear_server(): ...@@ -116,3 +115,18 @@ def test_deepcopy_clear_server():
copied_msgs.clear_server_messages() copied_msgs.clear_server_messages()
assert len(copied_msgs) == 1 assert len(copied_msgs) == 1
assert copied_msgs[0].code == msg.code assert copied_msgs[0].code == msg.code
def test_list_behavior():
msgs = db.common.models.Messages()
msgs.append(db.Message("test"))
assert len(msgs) == 1
assert msgs[0] == db.Message("test")
assert msgs[0] != db.Message("test2")
msgs.append(db.Message("test"))
assert len(msgs) == 2
assert msgs[0] == msgs[1]
with pytest.raises(IndexError):
msgs[3]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment