# 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'))