1
0
mirror of synced 2024-11-24 14:30:11 +01:00
bemaniutils/bemani/tests/test_NetworkData.py

64 lines
2.5 KiB
Python
Raw Normal View History

# vim: set fileencoding=utf-8
import unittest
from unittest.mock import Mock
from freezegun import freeze_time
from bemani.common import GameConstants
from bemani.data.mysql.network import NetworkData
from bemani.tests.helpers import FakeCursor
class TestNetworkData(unittest.TestCase):
def test_get_schedule_type(self) -> None:
network = NetworkData(Mock(), None)
with freeze_time("2016-01-01 12:00"):
# Check daily schedule
self.assertEqual(
# 2016-01-01 -> 2016-01-02
(1451606400, 1451692800),
network.get_schedule_duration("daily"),
)
# Check weekly schedule (weeks start on monday in python lol)
self.assertEqual(
# 2015-12-27 -> 2916-01-03
(1451260800, 1451865600),
network.get_schedule_duration("weekly"),
)
def test_should_schedule(self) -> None:
network = NetworkData(Mock(), None)
with freeze_time("2016-01-01"):
# Check for should schedule if nothing in DB
network.execute = Mock(return_value=FakeCursor([])) # type: ignore
self.assertTrue(
network.should_schedule(GameConstants.BISHI_BASHI, 1, "work", "daily")
)
self.assertTrue(
network.should_schedule(GameConstants.BISHI_BASHI, 1, "work", "weekly")
)
# Check for don't schedule if DB time is our current time
network.execute = Mock(return_value=FakeCursor([{"year": 2016, "day": 1}])) # type: ignore
self.assertFalse(
network.should_schedule(GameConstants.BISHI_BASHI, 1, "work", "daily")
)
network.execute = Mock(return_value=FakeCursor([{"year": None, "day": 16797}])) # type: ignore
self.assertFalse(
network.should_schedule(GameConstants.BISHI_BASHI, 1, "work", "weekly")
)
# Check for do schedule if DB time is older than our current time
network.execute = Mock(return_value=FakeCursor([{"year": 2015, "day": 365}])) # type: ignore
self.assertTrue(
network.should_schedule(GameConstants.BISHI_BASHI, 1, "work", "daily")
)
network.execute = Mock(return_value=FakeCursor([{"year": None, "day": 16790}])) # type: ignore
self.assertTrue(
network.should_schedule(GameConstants.BISHI_BASHI, 1, "work", "weekly")
)