예제 #1
0
async def test_achievement_zero_steps_increment(service: AchievementService):
    assert service.increment(achievement_id='3-4-5', steps=2, queue=[]) is None
    assert service.increment(achievement_id='3-4-5', steps=0, queue=[]) is None
    assert service.set_steps_at_least(
        achievement_id='3-4-5', steps=2, queue=[]) is None
    assert service.set_steps_at_least(
        achievement_id='3-4-5', steps=0, queue=[]) is None
예제 #2
0
async def test_update_multiple(service: AchievementService):
    content = '''{"updated_achievements": [
        { "achievement_id": "1-2-3", "current_state": "UNLOCKED", "newly_unlocked": true},
        { "achievement_id": "2-3-4", "current_state": "REVEALED", "newly_unlocked": false},
        { "achievement_id": "3-4-5", "current_state": "LOCKED", "current_steps": 2, "newly_unlocked": false},
        { "achievement_id": "4-5-6", "current_state": "UNLOCKED", "current_steps": 50, "newly_unlocked": false}
    ]}'''.encode('utf-8')
    service.api_accessor.api_post.coro.return_value = (None, content)

    queue = []
    service.unlock('1-2-3', queue)
    service.reveal('2-3-4', queue)
    service.increment('3-4-5', 2, queue)
    service.set_steps_at_least('4-5-6', 3, queue)

    assert queue == [
        dict(achievement_id='1-2-3', update_type='UNLOCK'),
        dict(achievement_id='2-3-4', update_type='REVEAL'),
        dict(achievement_id='3-4-5', update_type='INCREMENT', steps=2),
        dict(achievement_id='4-5-6', update_type='SET_STEPS_AT_LEAST', steps=3)
    ]

    result = await service.execute_batch_update(42, queue)
    assert result == json.loads(content.decode('utf-8'))['updated_achievements']

    service.api_accessor.api_post.assert_called_once_with("/achievements/updateMultiple", 42, data=dict(updates=queue))
예제 #3
0
async def test_update_multiple(service: AchievementService):
    content = '''{"updated_achievements": [
        { "achievement_id": "1-2-3", "current_state": "UNLOCKED", "newly_unlocked": true},
        { "achievement_id": "2-3-4", "current_state": "REVEALED", "newly_unlocked": false},
        { "achievement_id": "3-4-5", "current_state": "LOCKED", "current_steps": 2, "newly_unlocked": false},
        { "achievement_id": "4-5-6", "current_state": "UNLOCKED", "current_steps": 50, "newly_unlocked": false}
    ]}'''.encode('utf-8')
    service.api_accessor.api_post.coro.return_value = (None, content)

    queue = []
    service.unlock('1-2-3', queue)
    service.reveal('2-3-4', queue)
    service.increment('3-4-5', 2, queue)
    service.set_steps_at_least('4-5-6', 3, queue)

    assert queue == [
        dict(achievement_id='1-2-3', update_type='UNLOCK'),
        dict(achievement_id='2-3-4', update_type='REVEAL'),
        dict(achievement_id='3-4-5', update_type='INCREMENT', steps=2),
        dict(achievement_id='4-5-6', update_type='SET_STEPS_AT_LEAST', steps=3)
    ]

    result = await service.execute_batch_update(42, queue)
    assert result == json.loads(
        content.decode('utf-8'))['updated_achievements']

    service.api_accessor.api_post.assert_called_once_with(
        "/achievements/updateMultiple", 42, data=dict(updates=queue))
예제 #4
0
async def test_fill_queue(service: AchievementService):
    queue = []
    service.unlock('1-2-3', queue)
    service.reveal('2-3-4', queue)
    service.increment('3-4-5', 2, queue)
    service.set_steps_at_least('4-5-6', 3, queue)

    assert queue == [
        dict(achievement_id='1-2-3', update_type='UNLOCK'),
        dict(achievement_id='2-3-4', update_type='REVEAL'),
        dict(achievement_id='3-4-5', update_type='INCREMENT', steps=2),
        dict(achievement_id='4-5-6', update_type='SET_STEPS_AT_LEAST', steps=3)
    ]
예제 #5
0
async def test_fill_queue(service: AchievementService):
    queue = []
    service.unlock("1-2-3", queue)
    service.reveal("2-3-4", queue)
    service.increment("3-4-5", 2, queue)
    service.set_steps_at_least("4-5-6", 3, queue)

    assert queue == [
        dict(achievement_id="1-2-3", update_type="UNLOCK"),
        dict(achievement_id="2-3-4", update_type="REVEAL"),
        dict(achievement_id="3-4-5", update_type="INCREMENT", steps=2),
        dict(achievement_id="4-5-6", update_type="SET_STEPS_AT_LEAST", steps=3)
    ]
예제 #6
0
def achievement_service(api_accessor):
    from server.stats.achievement_service import AchievementService
    return AchievementService(api_accessor)
예제 #7
0
def service(api_accessor: ApiAccessor):
    return AchievementService(api_accessor)