async def test_check_deadline_1():
    t = datetime.fromtimestamp(1)
    dt = timedelta(days=2)
    create_event = CreateTicketEvent({
        'type': 'create',
        'object_name': '42',
        'timestamp': t,
        'client_name': 'test_admin',
        'user_name': 'Bob',
        'deadline': t + dt
    })
    store = Mock(EventReaderWriter)
    store.find_latest_event = CoroutineMock(side_effect=[None, create_event])
    assert await TurnstileService(store)._check_deadline(
        '42', t + timedelta(days=1))
    store.find_latest_event.assert_awaited_with(AdminEventType.Create, '42')

    store.find_latest_event = CoroutineMock(side_effect=[None, create_event])
    assert not await TurnstileService(store)._check_deadline(
        '42', t + timedelta(days=3))
    store.find_latest_event.assert_awaited_with(AdminEventType.Create, '42')
async def test_check_deadline_2():
    t = datetime.fromtimestamp(1)
    dt = timedelta(days=2)
    create_event = ExtendTicketEvent({
        'type': 'create',
        'object_name': '42',
        'timestamp': t,
        'client_name': 'test_admin',
        'deadline': t + dt
    })
    store = Mock(EventReaderWriter)
    store.find_latest_event = CoroutineMock(return_value=create_event)
    assert await TurnstileService(store)._check_deadline(
        '42', t + timedelta(days=1))
    store.find_latest_event.assert_awaited_once_with(AdminEventType.Extend,
                                                     '42')

    store.find_latest_event = CoroutineMock(return_value=create_event)
    assert not await TurnstileService(store)._check_deadline(
        '42', t + timedelta(days=3))
    store.find_latest_event.assert_awaited_once_with(AdminEventType.Extend,
                                                     '42')
async def test_info():
    t = datetime.fromtimestamp(1)
    dt = timedelta(days=1)
    create_event = CreateTicketEvent({
        'type': 'create',
        'object_name': '42',
        'timestamp': t,
        'client_name': 'test_admin',
        'user_name': 'Bob',
        'deadline': t + dt
    })
    store = Mock(EventReaderWriter)
    store.find_latest_event = CoroutineMock(return_value=create_event)
    res = await AdminService(store).info('42')
    assert res == {'user_name': 'Bob', 'deadline': str(t + dt)}
    store.find_latest_event.assert_awaited_once_with(AdminEventType.Create, '42')