예제 #1
0
    def test_apply_to_stanza(self):
        stanza_obj = stanza.Presence(type_=structs.PresenceType.PROBE)
        self.assertEqual(stanza_obj.show, structs.PresenceShow.NONE)

        ps = structs.PresenceState(available=True,
                                   show=structs.PresenceShow.DND)
        ps.apply_to_stanza(stanza_obj)
        self.assertEqual(
            structs.PresenceType.AVAILABLE,
            stanza_obj.type_
        )
        self.assertEqual(
            structs.PresenceShow.DND,
            stanza_obj.show
        )

        ps = structs.PresenceState()
        ps.apply_to_stanza(stanza_obj)
        self.assertEqual(
            structs.PresenceType.UNAVAILABLE,
            stanza_obj.type_
        )
        self.assertEqual(
            stanza_obj.show,
            structs.PresenceShow.NONE,
        )
예제 #2
0
    def test_apply_to_stanza(self):
        stanza_obj = stanza.Presence(type_="probe")
        self.assertEqual(
            "probe",
            stanza_obj.type_
        )
        self.assertIsNone(stanza_obj.show)

        ps = structs.PresenceState(available=True, show="dnd")
        ps.apply_to_stanza(stanza_obj)
        self.assertEqual(
            None,
            stanza_obj.type_
        )
        self.assertEqual(
            "dnd",
            stanza_obj.show
        )

        ps = structs.PresenceState()
        ps.apply_to_stanza(stanza_obj)
        self.assertEqual(
            "unavailable",
            stanza_obj.type_
        )
        self.assertIsNone(
            stanza_obj.show
        )
예제 #3
0
 def test_init_available_validate_show(self):
     with self.assertRaises(ValueError):
         ps = structs.PresenceState(available=True, show="foobar")
     for value in ["dnd", "xa", "away", None, "chat"]:
         value = structs.PresenceShow(value)
         ps = structs.PresenceState(available=True, show=value)
         self.assertEqual(value, ps.show)
예제 #4
0
 def test_repr(self):
     self.assertEqual("<PresenceState>", repr(structs.PresenceState()))
     self.assertEqual("<PresenceState available>",
                      repr(structs.PresenceState(available=True)))
     self.assertEqual(
         "<PresenceState available show=<PresenceShow.DND: 'dnd'>>",
         repr(
             structs.PresenceState(available=True,
                                   show=structs.PresenceShow.DND)))
예제 #5
0
    def test_from_stanza(self):
        stanza_obj = stanza.Presence(type_=structs.PresenceType.AVAILABLE)
        stanza_obj.show = structs.PresenceShow.XA
        self.assertEqual(
            structs.PresenceState(available=True,
                                  show=structs.PresenceShow.XA),
            structs.PresenceState.from_stanza(stanza_obj))

        stanza_obj = stanza.Presence(type_=structs.PresenceType.UNAVAILABLE, )
        self.assertEqual(structs.PresenceState(available=False),
                         structs.PresenceState.from_stanza(stanza_obj))
예제 #6
0
    def test_from_stanza(self):
        stanza_obj = stanza.Presence(type_=None)
        stanza_obj.show = "xa"
        self.assertEqual(
            structs.PresenceState(available=True, show="xa"),
            structs.PresenceState.from_stanza(stanza_obj)
        )

        stanza_obj = stanza.Presence(type_="unavailable")
        self.assertEqual(
            structs.PresenceState(available=False),
            structs.PresenceState.from_stanza(stanza_obj)
        )
예제 #7
0
 def test_repr(self):
     self.assertEqual(
         "<PresenceState>",
         repr(structs.PresenceState())
     )
     self.assertEqual(
         "<PresenceState available>",
         repr(structs.PresenceState(available=True))
     )
     self.assertEqual(
         "<PresenceState available show='dnd'>",
         repr(structs.PresenceState(available=True, show="dnd"))
     )
예제 #8
0
 def test_from_stanza_nonstrict_by_default(self):
     stanza_obj = stanza.Presence(type_="unavailable")
     stanza_obj.show = "dnd"
     self.assertEqual(
         structs.PresenceState(available=False),
         structs.PresenceState.from_stanza(stanza_obj)
     )
예제 #9
0
 def test_immutable(self):
     ps = structs.PresenceState()
     with self.assertRaises(AttributeError):
         ps.foo = "bar"
     with self.assertRaises(AttributeError):
         ps.available = True
     with self.assertRaises(AttributeError):
         ps.show = "baz"
예제 #10
0
 def test_from_stanza_nonstrict_by_default(self):
     stanza_obj = stanza.Presence(
         type_=structs.PresenceType.UNAVAILABLE
     )
     stanza_obj.show = structs.PresenceShow.AWAY
     self.assertEqual(
         structs.PresenceState(available=False),
         structs.PresenceState.from_stanza(stanza_obj)
     )
예제 #11
0
 def test_init_compat(self):
     with self.assertWarnsRegex(
             DeprecationWarning,
             "as of aioxmpp 1.0, the show argument must use "
             "PresenceShow instead of str") as ctx:
         ps = structs.PresenceState(True, "dnd")
     self.assertIn(
         "test_structs.py",
         ctx.filename,
     )
     self.assertTrue(ps.available)
     self.assertEqual(ps.show, structs.PresenceShow.DND)
예제 #12
0
    def test_apply_to_stanza(self):
        stanza_obj = stanza.Presence(type_=structs.PresenceType.PROBE)
        self.assertIsNone(stanza_obj.show)

        ps = structs.PresenceState(available=True, show="dnd")
        ps.apply_to_stanza(stanza_obj)
        self.assertEqual(
            structs.PresenceType.AVAILABLE,
            stanza_obj.type_
        )
        self.assertEqual(
            "dnd",
            stanza_obj.show
        )

        ps = structs.PresenceState()
        ps.apply_to_stanza(stanza_obj)
        self.assertEqual(
            structs.PresenceType.UNAVAILABLE,
            stanza_obj.type_
        )
        self.assertIsNone(
            stanza_obj.show
        )
예제 #13
0
 def test_equality(self):
     self.assertEqual(
         structs.PresenceState(),
         structs.PresenceState()
     )
     self.assertEqual(
         structs.PresenceState(available=True),
         structs.PresenceState(available=True)
     )
     self.assertEqual(
         structs.PresenceState(available=True, show="dnd"),
         structs.PresenceState(available=True, show="dnd")
     )
     self.assertFalse(
         structs.PresenceState(available=True, show="dnd") !=
         structs.PresenceState(available=True, show="dnd")
     )
예제 #14
0
    def test_proper_exception_on_invalid_ordering_operand(self):
        with self.assertRaises(TypeError):
            structs.PresenceState() < 1

        with self.assertRaises(TypeError):
            structs.PresenceState() > 1

        with self.assertRaises(TypeError):
            structs.PresenceState() >= 1

        with self.assertRaises(TypeError):
            structs.PresenceState() <= 1

        self.assertFalse(structs.PresenceState() == 0)
        self.assertTrue(structs.PresenceState() != 0)
예제 #15
0
    def test_ordering(self):
        values = [
            structs.PresenceState(),
            structs.PresenceState(available=True, show="dnd"),
            structs.PresenceState(available=True, show="xa"),
            structs.PresenceState(available=True, show="away"),
            structs.PresenceState(available=True),
            structs.PresenceState(available=True, show="chat"),
        ]

        for i in range(1, len(values)-1):
            for v1, v2 in zip(values[:-i], values[i:]):
                self.assertLess(v1, v2)
                self.assertLessEqual(v1, v2)
                self.assertNotEqual(v1, v2)
                self.assertGreater(v2, v1)
                self.assertGreaterEqual(v2, v1)
예제 #16
0
    def test_ordering(self):
        values = [
            structs.PresenceState(),
            structs.PresenceState(available=True,
                                  show=structs.PresenceShow.XA),
            structs.PresenceState(available=True,
                                  show=structs.PresenceShow.AWAY),
            structs.PresenceState(available=True),
            structs.PresenceState(available=True,
                                  show=structs.PresenceShow.CHAT),
            structs.PresenceState(available=True,
                                  show=structs.PresenceShow.DND),
        ]

        for i in range(1, len(values)-1):
            for v1, v2 in zip(values[:-i], values[i:]):
                self.assertLess(v1, v2)
                self.assertLessEqual(v1, v2)
                self.assertNotEqual(v1, v2)
                self.assertGreater(v2, v1)
                self.assertGreaterEqual(v2, v1)
예제 #17
0
 def test_init_available_with_show(self):
     ps = structs.PresenceState(available=True, show="dnd")
     self.assertTrue(ps.available)
     self.assertEqual("dnd", ps.show)
예제 #18
0
 def test_equality_deals_with_different_types(self):
     self.assertNotEqual(structs.PresenceState(), None)
     self.assertNotEqual(structs.PresenceState(), "foo")
     self.assertNotEqual(structs.PresenceState(), 123)
예제 #19
0
 def test_init_unavailable_forbids_show(self):
     with self.assertRaises(ValueError):
         structs.PresenceState(available=False,
                               show=structs.PresenceShow.DND)
예제 #20
0
 def test_init_available_with_show(self):
     ps = structs.PresenceState(available=True,
                                show=structs.PresenceShow.DND)
     self.assertTrue(ps.available)
     self.assertIs(structs.PresenceShow.DND, ps.show)
예제 #21
0
 def test_init_normalizes_available(self):
     ps = structs.PresenceState(available="foo")
     self.assertIs(True, ps.available)
예제 #22
0
 def test_init_available(self):
     ps = structs.PresenceState(available=True)
     self.assertTrue(ps.available)
예제 #23
0
 def test_init_defaults(self):
     ps = structs.PresenceState()
     self.assertFalse(ps.available)
     self.assertEqual(ps.show, structs.PresenceShow.NONE)
예제 #24
0
 def test_init_defaults(self):
     ps = structs.PresenceState()
     self.assertFalse(ps.available)
     self.assertIsNone(ps.show)