<filename>bus_presence_override/tests/test_bus_presence.py<gh_stars>0
# -*- coding: utf-8 -*-
# Copyright 2017 LasLabs Inc.
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).

from mock import patch

from .bus_setup import BusSetup
from ..status_constants import ONLINE, AWAY, OFFLINE

AWAY_TIMER = 'odoo.addons.bus_presence_override.models.' \
             'bus_presence.AWAY_TIMER'

DISCONNECTION_TIMER = 'odoo.addons.bus_presence_override.models.' \
                      'bus_presence.DISCONNECTION_TIMER'


class TestBusPresence(BusSetup):

    @patch(AWAY_TIMER, 10000000)
    @patch(DISCONNECTION_TIMER, 10000000)
    def test_compute_status_realtime_online(self):
        """ It should be computed to online """
        self.assertEquals(
            self.pres_admin.status_realtime,
            ONLINE,
        )

    @patch(AWAY_TIMER, 10000000)
    @patch(DISCONNECTION_TIMER, 0)
    def test_compute_status_realtime_offline(self):
        """ It should be computed to offline """
        self.assertEquals(
            self.pres_admin.status_realtime,
            OFFLINE,
        )

    @patch(AWAY_TIMER, 0)
    @patch(DISCONNECTION_TIMER, 10000000)
    def test_compute_status_realtime_away(self):
        """ It should be computed to away """
        self.assertEquals(
            self.pres_admin.status_realtime,
            AWAY,
        )

    @patch(AWAY_TIMER, 0)
    @patch(DISCONNECTION_TIMER, 0)
    def test_compute_status_realtime_both(self):
        """ It should be computed to offline even though away as well """
        self.assertEquals(
            self.pres_admin.status_realtime,
            OFFLINE,
        )

    @patch(AWAY_TIMER, 0)
    @patch(DISCONNECTION_TIMER, 0)
    def test_status_check_timers_offline(self):
        """ It should be changed to offline from online """
        self.pres_admin.status = ONLINE
        self.assertEquals(
            self.pres_admin.status,
            ONLINE,
        )
        self.pres_admin._status_check_disconnection_and_away_timers()
        self.assertEquals(
            self.pres_admin.status,
            OFFLINE,
        )

    @patch(AWAY_TIMER, 0)
    @patch(DISCONNECTION_TIMER, 10000000)
    def test_status_check_timers_away(self):
        """ It should be changed to away from online """
        self.pres_admin.status = ONLINE
        self.assertEquals(
            self.pres_admin.status,
            ONLINE,
        )
        self.pres_admin._status_check_disconnection_and_away_timers()
        self.assertEquals(
            self.pres_admin.status,
            AWAY,
        )

    @patch(AWAY_TIMER, 0)
    @patch(DISCONNECTION_TIMER, 10000000)
    def test_status_check_timers_unchanged(self):
        """ It should remain at offline even if status_realtime away """
        self.pres_admin.status = OFFLINE
        self.assertEquals(
            self.pres_admin.status,
            OFFLINE,
        )
        self.pres_admin._status_check_disconnection_and_away_timers()
        self.assertEquals(
            self.pres_admin.status,
            OFFLINE,
        )

    def test_get_partners_im_statuses(self):
        """ It should include demo and admin partner statuses """
        recs = self.env['bus.presence'].search([(
            'partner_id', 'in', [self.p_admin.id, self.p_demo.id])]
        )
        statuses = recs._get_partners_statuses()
        self.assertIn(
            self.p_admin.id,
            statuses,
        )

    def test_get_users_im_statuses(self):
        """ It should include demo and admin user statuses """
        recs = self.env['bus.presence'].search([(
            'user_id', 'in', [self.u_admin.id, self.u_demo.id])]
        )
        statuses = recs._get_users_statuses()
        self.assertIn(
            self.u_admin.id,
            statuses,
        )

<filename>bus_presence_override/tests/test_bus_presence.py<gh_stars>0
# -*- coding: utf-8 -*-
# Copyright 2017 LasLabs Inc.
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).

from mock import patch

from .bus_setup import BusSetup
from ..status_constants import ONLINE, AWAY, OFFLINE

AWAY_TIMER = 'odoo.addons.bus_presence_override.models.' \
             'bus_presence.AWAY_TIMER'

DISCONNECTION_TIMER = 'odoo.addons.bus_presence_override.models.' \
                      'bus_presence.DISCONNECTION_TIMER'


class TestBusPresence(BusSetup):

    @patch(AWAY_TIMER, 10000000)
    @patch(DISCONNECTION_TIMER, 10000000)
    def test_compute_status_realtime_online(self):
        """ It should be computed to online """
        self.assertEquals(
            self.pres_admin.status_realtime,
            ONLINE,
        )

    @patch(AWAY_TIMER, 10000000)
    @patch(DISCONNECTION_TIMER, 0)
    def test_compute_status_realtime_offline(self):
        """ It should be computed to offline """
        self.assertEquals(
            self.pres_admin.status_realtime,
            OFFLINE,
        )

    @patch(AWAY_TIMER, 0)
    @patch(DISCONNECTION_TIMER, 10000000)
    def test_compute_status_realtime_away(self):
        """ It should be computed to away """
        self.assertEquals(
            self.pres_admin.status_realtime,
            AWAY,
        )

    @patch(AWAY_TIMER, 0)
    @patch(DISCONNECTION_TIMER, 0)
    def test_compute_status_realtime_both(self):
        """ It should be computed to offline even though away as well """
        self.assertEquals(
            self.pres_admin.status_realtime,
            OFFLINE,
        )

    @patch(AWAY_TIMER, 0)
    @patch(DISCONNECTION_TIMER, 0)
    def test_status_check_timers_offline(self):
        """ It should be changed to offline from online """
        self.pres_admin.status = ONLINE
        self.assertEquals(
            self.pres_admin.status,
            ONLINE,
        )
        self.pres_admin._status_check_disconnection_and_away_timers()
        self.assertEquals(
            self.pres_admin.status,
            OFFLINE,
        )

    @patch(AWAY_TIMER, 0)
    @patch(DISCONNECTION_TIMER, 10000000)
    def test_status_check_timers_away(self):
        """ It should be changed to away from online """
        self.pres_admin.status = ONLINE
        self.assertEquals(
            self.pres_admin.status,
            ONLINE,
        )
        self.pres_admin._status_check_disconnection_and_away_timers()
        self.assertEquals(
            self.pres_admin.status,
            AWAY,
        )

    @patch(AWAY_TIMER, 0)
    @patch(DISCONNECTION_TIMER, 10000000)
    def test_status_check_timers_unchanged(self):
        """ It should remain at offline even if status_realtime away """
        self.pres_admin.status = OFFLINE
        self.assertEquals(
            self.pres_admin.status,
            OFFLINE,
        )
        self.pres_admin._status_check_disconnection_and_away_timers()
        self.assertEquals(
            self.pres_admin.status,
            OFFLINE,
        )

    def test_get_partners_im_statuses(self):
        """ It should include demo and admin partner statuses """
        recs = self.env['bus.presence'].search([(
            'partner_id', 'in', [self.p_admin.id, self.p_demo.id])]
        )
        statuses = recs._get_partners_statuses()
        self.assertIn(
            self.p_admin.id,
            statuses,
        )

    def test_get_users_im_statuses(self):
        """ It should include demo and admin user statuses """
        recs = self.env['bus.presence'].search([(
            'user_id', 'in', [self.u_admin.id, self.u_demo.id])]
        )
        statuses = recs._get_users_statuses()
        self.assertIn(
            self.u_admin.id,
            statuses,
        )

# -*- coding: utf-8 -*- # Copyright 2017 LasLabs Inc. # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). It should be computed to online It should be computed to offline It should be computed to away It should be computed to offline even though away as well It should be changed to offline from online It should be changed to away from online It should remain at offline even if status_realtime away It should include demo and admin partner statuses It should include demo and admin user statuses