def test_clear_data():
    test_iid = test_utils.make_instance()
    response = app.post('/getinstance', {'gid': gid, 'iid': test_iid})
    assert response.json['e'] is False
    test_utils.clear_data_store()
    response = app.post('/getinstance', {'gid': gid, 'iid': test_iid})
    assert response.json['e'] is True
def test_clear_data():
  test_iid = test_utils.make_instance()
  response = app.post('/getinstance', {'gid': gid, 'iid' : test_iid})
  assert response.json['e'] is False
  test_utils.clear_data_store()
  response = app.post('/getinstance', {'gid': gid, 'iid' : test_iid})
  assert response.json['e'] is True
def test_leave_instance():
    test_utils.clear_data_store()
    iid = test_utils.make_instance()
    other = '*****@*****.**'
    test_utils.add_player(iid, other)
    response = app.post('/leaveinstance', {
        'gid': gid,
        'iid': iid,
        'pid': firstpid
    }).json
    assert response['e'] is False
    assert response['request_type'] == '/leaveinstance'
    assert response['leader'] == ''
    assert response['response']['joined'] == []
    response = app.post('/leaveinstance', {
        'gid': gid,
        'iid': iid,
        'pid': other
    }).json
    assert response['e'] is False
    assert response['request_type'] == '/leaveinstance'
    assert response['leader'] == ''
    assert response['iid'] == ''
    assert response['response']['joined'] == []
    response = app.post('/joininstance', {
        'gid': gid,
        'iid': iid,
        'pid': firstpid
    }).json
    assert response['e'] is True
def test_get_instance_lists_with_no_game():
  test_utils.clear_data_store()
  assert not test_utils.get_game_model()
  response = app.post('/getinstancelists',
                      {'gid': gid,
                       'iid' : '',
                       'pid' : firstpid}).json
  assert response['gid'] == gid
  assert response['iid'] == ''
  assert response['response']['invited'] == []
  assert response['response']['joined'] == []
  assert test_utils.get_game_model()
def test_get_instance_lists_with_no_game():
    test_utils.clear_data_store()
    assert not test_utils.get_game_model()
    response = app.post('/getinstancelists', {
        'gid': gid,
        'iid': '',
        'pid': firstpid
    }).json
    assert response['gid'] == gid
    assert response['iid'] == ''
    assert response['response']['invited'] == []
    assert response['response']['joined'] == []
    assert test_utils.get_game_model()
def test_join_instance_makes_new_instance():
  test_utils.clear_data_store()
  iid = 'new_iid'
  assert not test_utils.get_game_model()
  assert not test_utils.get_instance_model(iid)
  response = app.post('/joininstance',
                      {'gid': gid,
                       'iid' : iid,
                       'pid' : firstpid}).json
  assert response['iid'] == iid
  assert response['gid'] == gid
  assert response['response']['invited'] == []
  assert response['response']['joined'] == [iid]
  assert test_utils.get_game_model()
  assert test_utils.get_instance_model(iid)
def test_join_instance_makes_new_instance():
    test_utils.clear_data_store()
    iid = 'new_iid'
    assert not test_utils.get_game_model()
    assert not test_utils.get_instance_model(iid)
    response = app.post('/joininstance', {
        'gid': gid,
        'iid': iid,
        'pid': firstpid
    }).json
    assert response['iid'] == iid
    assert response['gid'] == gid
    assert response['response']['invited'] == []
    assert response['response']['joined'] == [iid]
    assert test_utils.get_game_model()
    assert test_utils.get_instance_model(iid)
def test_get_public_instances_with_player_counts():
    test_utils.clear_data_store()
    iid = test_utils.make_instance_with_players()
    test_utils.post_server_command(iid, "sys_set_public", [True])

    instance = test_utils.get_instance_model(iid)
    players = len(instance.players)

    response = test_utils.post_server_command("", "sys_get_public_instances", [])
    assert [iid, 3, 0] in response["contents"]

    test_utils.post_server_command(iid, "sys_set_max_players", [players + 1])
    response = test_utils.post_server_command(iid, "sys_get_public_instances", [])
    assert [iid, players, players + 1] in response["contents"]

    test_utils.post_server_command(iid, "sys_set_max_players", [0])
    response = test_utils.post_server_command(iid, "sys_get_public_instances", [])
    assert [iid, players, 0] in response["contents"]
def test_join_instance():
  test_utils.clear_data_store()
  test_iid = test_utils.make_instance()
  invitee = '*****@*****.**'
  app.post('/invite', {'gid': gid, 'iid' : test_iid, 'inv' : invitee})
  instances = test_utils.get_invited_and_joined_instances(test_iid, invitee)
  assert instances['invited'] == [test_iid]
  assert instances['joined'] == []

  response = app.post('/joininstance', {'gid': gid, 'iid' : test_iid,
                                        'pid' : invitee}).json
  assert response['e'] is False
  assert response['request_type'] == '/joininstance'

  instances = test_utils.get_invited_and_joined_instances(test_iid, invitee)
  assert instances['invited'] == response['response']['invited']
  assert instances['joined'] == response['response']['joined']
  assert test_iid not in instances['invited']
  assert test_iid in instances['joined']
def test_leave_instance():
  test_utils.clear_data_store()
  iid = test_utils.make_instance()
  other = '*****@*****.**'
  test_utils.add_player(iid, other)
  response = app.post('/leaveinstance', {'gid': gid, 'iid' : iid,
                                         'pid' : firstpid}).json
  assert response['e'] is False
  assert response['request_type'] == '/leaveinstance'
  assert response['leader'] == ''
  assert response['response']['joined'] == []
  response = app.post('/leaveinstance', {'gid': gid, 'iid' : iid,
                                         'pid' : other}).json
  assert response['e'] is False
  assert response['request_type'] == '/leaveinstance'
  assert response['leader'] == ''
  assert response['iid'] == ''
  assert response['response']['joined'] == []
  response = app.post('/joininstance', {'gid': gid, 'iid' : iid,
                                        'pid' : firstpid}).json
  assert response['e'] is True
def test_join_instance():
    test_utils.clear_data_store()
    test_iid = test_utils.make_instance()
    invitee = '*****@*****.**'
    app.post('/invite', {'gid': gid, 'iid': test_iid, 'inv': invitee})
    instances = test_utils.get_invited_and_joined_instances(test_iid, invitee)
    assert instances['invited'] == [test_iid]
    assert instances['joined'] == []

    response = app.post('/joininstance', {
        'gid': gid,
        'iid': test_iid,
        'pid': invitee
    }).json
    assert response['e'] is False
    assert response['request_type'] == '/joininstance'

    instances = test_utils.get_invited_and_joined_instances(test_iid, invitee)
    assert instances['invited'] == response['response']['invited']
    assert instances['joined'] == response['response']['joined']
    assert test_iid not in instances['invited']
    assert test_iid in instances['joined']
def setUp():
  test_utils.clear_data_store()
def setUp():
    test_utils.clear_data_store()
def tearDown():
    test_utils.clear_data_store()
def tearDown():
    test_utils.clear_data_store()