def game(request): #check if authed # print "user " + str(request.user) if not request.user.is_authenticated(): return HttpResponse('Unauthorized', status=401) if request.method == 'GET': #return a list of games available return get_json(list(Game.objects.all())) elif request.method == 'POST': # make sure authed try: json_data = json.loads(request.body) # user = this user new_game = Game(status = Game.OPEN) new_game.save() new_game.players.add(request.user) amounts = json_data['amounts'] for i, amount in enumerate(amounts): new_pile = Pile( position = i, amount = amount, game = new_game ) new_pile.save() return get_json(new_game) except Exception, e: return HttpResponseServerError("Malformed data!")
def test_simple_game(self): game = Game.objects.get() #create 3 piles - 2,3,4 for i, p in enumerate([2,3,4]): new_pile = Pile( position = i, amount = p, game = game ) new_pile.save() self.assertEqual(len(game.pile_set.all()), 3) #create a couple users user_one = User.objects.create_user("one", password="******") user_one.save() user_two = User.objects.create_user("two", password="******") user_two.save() #add them to the game game.players.add(user_one) game.players.add(user_two) game.save() #reget the game game = Game.objects.get() self.assertEqual(len(game.players.all()), 2) #test a basic set of three moves, each player taking the max on each for i, (user, take) in enumerate([(user_one, 2), (user_two, 3), (user_one, 4)]): pile = game.pile_set.get(position = i) self.assertEqual(pile.amount, take) pile.amount = 0 pile.save() #create a corresponding move new_move = Move( #start at 0th move order = i, game = game, pile = pile, taken = take, user = user ) new_move.save() #check it went user 1, user 2, user 1 moves = game.move_set.all().order_by('date') self.assertEqual(len(moves), 3) # print moves[0] # print moves[1] # print moves[2] self.assertEqual(moves[0].user, user_one) self.assertEqual(moves[1].user, user_two) self.assertEqual(moves[2].user, user_one)
def test_pile_move_added(self): game = Game.objects.get() new_pile = Pile( position = 0, amount = 3, game = game ) new_pile.save() new_move = Move( #start at 0th move order = 0, game = game, pile = new_pile, taken = 2 ) new_move.save() self.assertEqual(len(game.pile_set.all()), 1) self.assertEqual(len(game.move_set.all()), 1)