def test_lab_to_dict(self):
        lab_doc = modl.LabDocument("foo")
        lab_doc.name = "bar"
        lab_doc.created_on = "now"
        lab_doc.updated_on = "now"
        lab_doc.id = "bar"
        lab_doc.address = {
            "street_1": "a",
            "street_2": "b",
            "city": "c",
            "country": "d",
            "zipcode": "e",
            "longitude": "f",
            "latitude": "h"
        }
        lab_doc.private = True
        lab_doc.token = "token"
        lab_doc.contact = {
            "name": "foo",
            "surname": "bar",
            "telephone": "1234",
            "mobile": "1234",
            "email": "*****@*****.**"
        }

        expected = {
            "name": "bar",
            "created_on": "now",
            "updated_on": "now",
            "_id": "bar",
            "address": {
                "street_1": "a",
                "street_2": "b",
                "city": "c",
                "country": "d",
                "zipcode": "e",
                "longitude": "f",
                "latitude": "h"
            },
            "private": True,
            "token": "token",
            "contact": {
                "name": "foo",
                "surname": "bar",
                "telephone": "1234",
                "mobile": "1234",
                "email": "*****@*****.**"
            },
            "version": None,
        }

        self.assertDictEqual(expected, lab_doc.to_dict())
    def test_set_contact_missing_email(self):
        lab_doc = modl.LabDocument("foo")

        contact = {"name": "foo", "surname": "bar"}

        self.assertRaises(ValueError, setattr, lab_doc, "contact", contact)
    def test_set_contact_only_surname(self):
        lab_doc = modl.LabDocument("foo")

        contact = {"surname": "bar"}

        self.assertRaises(ValueError, setattr, lab_doc, "contact", contact)
    def test_set_contact_wrong_type(self):
        lab_doc = modl.LabDocument("foo")

        self.assertRaises(TypeError, setattr, lab_doc, "contact", "")
        self.assertRaises(TypeError, setattr, lab_doc, "contact", [])
        self.assertRaises(TypeError, setattr, lab_doc, "contact", ())
    def test_set_contact_missing_valid_fields(self):
        lab_doc = modl.LabDocument("foo")

        self.assertRaises(ValueError, setattr, lab_doc, "contact", {})
    def test_set_address_wrong_type(self):
        lab_doc = modl.LabDocument("foo")

        self.assertRaises(TypeError, setattr, lab_doc, "address", "")
        self.assertRaises(TypeError, setattr, lab_doc, "address", [])
        self.assertRaises(TypeError, setattr, lab_doc, "address", ())
 def test_model_collection(self):
     lab_doc = modl.LabDocument("")
     self.assertEqual(lab_doc.collection, "lab")
 def test_is_valid_base_class(self):
     self.assertIsInstance(modl.LabDocument(""), modb.BaseDocument)