class TweetTestCase(TestCase): def setUp(self): self.users = { 'author': User.objects.create(username='******'), 'user1': User.objects.create(username='******'), 'user2': User.objects.create(username='******'), 'user3': User.objects.create(username='******'), } self.tweet = Tweet(author=self.users['author'], tweet_text='aaa', pub_date=timezone.now()) self.tweet.save() def test_score(self): """tweet score is correctly calculated""" votes = [ Vote.objects.create(voter=self.users['user1'], tweet=self.tweet, direction=0), Vote.objects.create(voter=self.users['user2'], tweet=self.tweet, direction=0), Vote.objects.create(voter=self.users['user3'], tweet=self.tweet, direction=0), ] self.tweet.vote_set.set(votes) self.assertEqual(self.tweet.score, 0) new_directions = [-1, 1, 1] for vote, direction in zip(votes, new_directions): vote.direction = direction vote.save() self.assertEqual(self.tweet.score, sum(new_directions)) def test_decorating_list(self): pass # TODO def test_voting(self): """tweet voting works as intended""" user = self.users['user1'] result = self.tweet.make_vote(user, 1) self.assertTrue(result['created'], 'voting for the first time creates new vote') self.assertEqual(result['direction'], 1, 'voting sets vote direction correctly') self.assertEqual(result['updated_score'], 1, 'score is correctly updated') result = self.tweet.make_vote(user, 1) self.assertFalse(result['created'], 'subsequent votes do not create new vote instances') self.assertEqual( result['direction'], 0, 'subsequent vote with same direction sets direction to 0') self.assertEqual(result['updated_score'], 0, 'score is correctly updated') result = self.tweet.make_vote(user, 1) self.assertFalse(result['created'], 'subsequent votes do not create new vote instances') self.assertEqual(result['direction'], 1, 'voting sets new vote direction correctly') self.assertEqual(result['updated_score'], 1, 'score is correctly updated') result = self.tweet.make_vote(user, -1) self.assertFalse(result['created'], 'subsequent votes do not create new vote instances') self.assertEqual(result['direction'], -1, 'voting sets new vote direction correctly') self.assertEqual(result['updated_score'], -1, 'score is correctly updated') def tearDown(self): pass