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
### 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 ###
* 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 ###
### Fixed ###
......
This diff is collapsed.
......@@ -30,7 +30,6 @@ import caosdb as db
from argparse import ArgumentParser
from argparse import RawDescriptionHelpFormatter
from _testcapi import raise_exception
__all__ = []
__version__ = 0.1
......
......@@ -154,7 +154,7 @@ def test_convert_with_references():
obj = convert_to_python_object(r)
assert obj.ref.a == 42
# 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
# Unresolved Reference:
......@@ -163,7 +163,7 @@ def test_convert_with_references():
obj = convert_to_python_object(r)
# 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 obj.ref.id == 27
......
......@@ -27,11 +27,14 @@ import caosdb as db
from copy import deepcopy
import pytest
def test_messages_dict_behavior():
from caosdb.common.models import Message
from caosdb.common.models import _Messages
from caosdb.common.models import Messages
msgs = _Messages()
msgs = Messages()
# create Message
msg = Message(
......@@ -40,12 +43,12 @@ def test_messages_dict_behavior():
description="Greeting the 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'
msgs.append(msg)
assert len(msgs) == 1
# use _Messages as list of Message objects
# use Messages as list of Message objects
for m in msgs:
assert isinstance(m, Message)
......@@ -70,10 +73,6 @@ def test_messages_dict_behavior():
assert msgs["HelloWorld", 2] == (
"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]
assert msgs.get("HelloWorld", 2) is None
......@@ -83,11 +82,11 @@ def test_messages_dict_behavior():
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.
"""
msgs = db.common.models._Messages()
msgs = db.common.models.Messages()
msg = db.Message(type="bla", code=1234, description="desc", body="blabla")
msgs.append(msg)
msg_copy = deepcopy(msgs)[0]
......@@ -102,7 +101,7 @@ def test_deepcopy():
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")
err_msg = db.Message(type="Error", code=1357, description="error")
msgs.extend([msg, err_msg])
......@@ -116,3 +115,18 @@ def test_deepcopy_clear_server():
copied_msgs.clear_server_messages()
assert len(copied_msgs) == 1
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.
Finish editing this message first!
Please register or to comment