34 lines
1.7 KiB
Python
34 lines
1.7 KiB
Python
# vim: set fileencoding=utf-8
|
|
import unittest
|
|
from unittest.mock import Mock
|
|
|
|
from bemani.common import GameConstants
|
|
from bemani.data.mysql.game import GameData
|
|
from bemani.tests.helpers import FakeCursor
|
|
|
|
|
|
class TestGameData(unittest.TestCase):
|
|
|
|
def test_put_time_sensitive_settings(self) -> None:
|
|
game = GameData(Mock(), None)
|
|
|
|
# Verify that we catch incorrect input order
|
|
with self.assertRaises(Exception) as context:
|
|
game.put_time_sensitive_settings(GameConstants.BISHI_BASHI, 1, 'work', {'start_time': 12345, 'end_time': 12340})
|
|
self.assertTrue('Start time is greater than end time!' in str(context.exception))
|
|
|
|
# Verify that we catch events spanning no time
|
|
with self.assertRaises(Exception) as context:
|
|
game.put_time_sensitive_settings(GameConstants.BISHI_BASHI, 1, 'work', {'start_time': 12345, 'end_time': 12345})
|
|
self.assertTrue('This setting spans zero seconds!' in str(context.exception))
|
|
|
|
# Verify that we ignore finding ourselves before updating
|
|
game.execute = Mock(return_value=FakeCursor([{'start_time': 12345, 'end_time': 12346}])) # type: ignore
|
|
game.put_time_sensitive_settings(GameConstants.BISHI_BASHI, 1, 'work', {'start_time': 12345, 'end_time': 12346})
|
|
|
|
# Verify that we catch events overlapping other events in the DB
|
|
game.execute = Mock(return_value=FakeCursor([{'start_time': 12345, 'end_time': 12350}])) # type: ignore
|
|
with self.assertRaises(Exception) as context:
|
|
game.put_time_sensitive_settings(GameConstants.BISHI_BASHI, 1, 'work', {'start_time': 12347, 'end_time': 12355})
|
|
self.assertTrue('This event overlaps an existing one with start time 12345 and end time 12350' in str(context.exception))
|