def test_deactivation(self): def cmts(): return self.api_post('/api/quest_comments/user_comments', {'username': user.username})['comments'] quest = create_current_quest() content = create_content() user = create_user() comment = self.api_post('/api/quest_comments/post', { 'quest_id': quest.id, 'content_id': content.id, }, user=user)['comment'] self.assertEqual(cmts()[0]['id'], comment['id']) self.api_post('/api/auth/actually_deactivate', user=user) self.assertFalse(cmts())
def test_reactions(self): cmt = create_quest_comment() star_models.star(create_user(), cmt) Playback.append(comment=cmt, viewer=create_user()) cmt = QuestComment.objects.get(id=cmt.id) reactions = cmt.details().reactions self.assertEqual(len(reactions), 2)
def test_starred_comments_gallery(self): cmt = create_quest_comment(self.quest) user = create_user() self._star(cmt.id, user=user) gallery = self.api_post('/api/quest_comments/starred_comments_gallery', {'username': user.username})['comments'] self.assertEqual(cmt.id, gallery[0]['id'])
def test_quest_inbox_with_followee_ugq(self): user = create_user() followee = create_user() user.follow(followee) ugq_resp = self.api_post('/api/ugq/create_quest', { 'title': 'Test', 'content_id': None, }, user=followee) resp = self.api_post('/api/quests/inbox', user=user) self.assertAPISuccess(resp) quests = resp['quests'] self.assertEqual(quests[0]['id'], ugq_resp['quest']['id']) self.assertEqual(len(quests), 1)
def test_user_comments(self): user = create_user() self._post(user=user) cmts = self.api_post('/api/quest_comments/user_comments', {'username': user.username}, user=user)['comments'] self.assertEqual(cmts[0]['id'], self.comment['id'])
def test_streak_rewards(self): user = create_user() with override_service('time', FakeTimeProvider): def post(): quest = create_current_quest() def rewards(): resp = self.api_post('/api/quest_comments/rewards_for_posting', {'quest_id': quest.id}, user=user) self.assertAPISuccess(resp) print resp return resp['rewards'] before = rewards() self._post(user=user, quest=quest) after = rewards() Services.time.t += 60*60*24 return (before, after,) current_streak = 0 streaks = [3, 10, 100] for _ in xrange(4): #TODO should be higher but this is just too slow. before, after = post() for streak in streaks: msg = 'After posting this, the current streak would be: {}'.format(current_streak + 1) if (current_streak + 1) == streak: self.assertTrue('streak_' + str(streak) in before, msg) self.assertFalse('streak_' + str(streak) in after, msg) else: self.assertFalse('streak_' + str(streak) in before, msg) current_streak += 1
def test_unsubscribe(self): author = create_user() def recipients(): actor = create_user() cmt = create_quest_comment(author=author) sticker = CommentSticker.objects.create( comment=cmt, timestamp=time.time(), type_id=settings.STAR_STICKER_TYPE_ID, user=actor, ip='0.0.0.0', ) r = action_recipients('starred', actor, sticker, channel='PushNotificationChannel') return (r, cmt) r, cmt = recipients() self.assertIn(author.id, [u.id for u in r]) self.api_post('/api/push_notifications/unsubscribe', {'notification_type': 'starred'}, user=author) r, cmt = recipients() self.assertNotIn(author.id, [u.id for u in r]) self.api_post('/api/push_notifications/resubscribe', {'notification_type': 'starred'}, user=author) r, cmt = recipients() self.assertIn(author.id, [u.id for u in r])
def after_setUp(self): self.inactive_user = create_user() self.client = self.get_client(user=self.inactive_user) self.client.login(username=self.inactive_user.username, password=PASSWORD) self.inactive_user.is_active = False self.inactive_user.save()
def post_offtopic_comment(self, **kwargs): group = create_group(founder=create_user()) op = self.post_comment(reply_content=create_content().id, category=group.name, **kwargs) op.mark_offtopic(group.founder) return op
def test_streak_rewards(self): user = create_user() def post(): quest = create_current_quest() def rewards(): resp = self.api_post('/api/quest_comments/rewards_for_posting', {'quest_id': quest.id}, user=user) self.assertAPISuccess(resp) return resp['rewards'] before = rewards() self._post(user=user, quest=quest) after = rewards() return (before, after,) current_streak = 0 streaks = [3, 10, 100] for _ in xrange(11): before, after = post() for streak in streaks: msg = 'After posting this, the current streak would be: {}'.format(current_streak + 1) if (current_streak + 1) == streak: self.assertTrue('streak_' + str(streak) in before, msg) self.assertFalse('streak_' + str(streak) in after, msg) else: self.assertFalse('streak_' + str(streak) in before, msg) current_streak += 1
def after_setUp(self): self.old_quest = create_current_quest() self.quest = create_current_quest() self.user = create_user() knobs.ONBOARDING_QUEST_ID = self.quest.id self.comments_per_page = knobs.COMMENTS_PER_PAGE knobs.COMMENTS_PER_PAGE = COMMENTS_PER_PAGE
def test_set(self): user = create_user() items = {'saw_update_modal_for_version': 'bar'} self.assertAPISuccess(self.api_post('/api/kv/set', {'items': items}, user=user)) state = self.api_post('/api/heavy_state_sync', user=user) self.assertAPISuccess(state) self.assertEqual(state['user_kv']['saw_update_modal_for_version'], 'bar')
def test_successful(self): email = '*****@*****.**' user = create_user() self.api_post('/api/user/change_profile', {'new_email': email}, user=user) hashed = hashlib.sha1(email).hexdigest() resp = self.api_post('/api/existing_users_by_email', {'email_hashes': [hashed]}) self.assertAPISuccess(resp) self.assertEqual(resp['users'][0]['username'], user.username)
def get_client(cls, user=None, password=None): if password is None: password = PASSWORD if not user: user = create_user(password=password) # Django 1.3 has a RequestFactory to make this much simpler. client = Client() client.login(username=user.username, password=password) return client
def create_comment(**kwargs): kwargs["author"] = kwargs.get("author", create_user()) kwargs["timestamp"] = kwargs.get("timestamp", Services.time.time()) kwargs["anonymous"] = kwargs.get("anonymous", False) if kwargs.get("parent_comment") is None: kwargs["title"] = kwargs.get("title", "Sample title.") comment = Comment(**kwargs) comment.save() return comment
def _post(self, user=None, quest=None): if user is None: user = create_user() quest_id = getattr(quest, 'id', None) or self.quest.id self.comment = self.api_post('/api/quest_comments/post', { 'quest_id': quest_id, 'content_id': self.content.id, }, user=user)['comment']
def create_comment(**kwargs): kwargs['author'] = kwargs.get('author', create_user()) kwargs['timestamp'] = kwargs.get('timestamp', Services.time.time()) kwargs['anonymous'] = kwargs.get('anonymous', False) if kwargs.get('parent_comment') is None: kwargs['title'] = kwargs.get('title', 'Sample title.') comment = Comment(**kwargs) comment.save() return comment
def test_username_available(self): def available(username): return self.api_post('/api/auth/username_available', data={'username': username}) resp = available(USERNAME) self.assertTrue(resp['available']) user = create_user() resp = available(user.username) self.assertFalse(resp['available'])
def test_loads_with_feed_item(self): user = create_staff() other = create_user() user.follow(other) cmt = self.post_quest_comment(author=other)['comment'] resp = self.api_post('/api/feed/followee_comments', user=user) self.assertAPISuccess(resp) self.assertEqual(resp['comments'][0]['id'], cmt['id'])
def _post(self, user=None, quest=None, **kwargs): if user is None: user = create_user() params = { 'quest_id': self.quest.id, 'content_id': self.content.id, } params.update(kwargs) return self.api_post('/api/quest_comments/post', params, user=user)['comment']
def test_set_playback_data_api(self): user = create_user() cmt = self._post(user=user) playback = '{"1": 2}' resp = self.post('/api/playback/set_playback_data', data={ 'comment_id': cmt['id'], 'playback_data': playback, }, user=user) self._check(cmt['id'], playback)
def test_set(self): user = create_user() items = {'saw_update_modal_for_version': 'bar'} self.assertAPISuccess( self.api_post('/api/kv/set', {'items': items}, user=user)) state = self.api_post('/api/heavy_state_sync', user=user) self.assertAPISuccess(state) self.assertEqual(state['user_kv']['saw_update_modal_for_version'], 'bar')
def _post(self, user=None, quest=None, **kwargs): if user is None: user = create_user() quest_id = getattr(quest, 'id', None) or self.quest.id params = { 'quest_id': quest_id, 'content_id': self.content.id, } params.update(kwargs) self.comment = self.api_post('/api/quest_comments/post', params, user=user)['comment']
def test_quest_dismissal(self): user = create_user() inviter = create_user() self.api_post('/api/quest_invites/invite_user_to_quest', { 'username': user.username, 'quest_id': self.old_quest.id, }, user=inviter) resp = self.api_post('/api/quests/inbox', user=user) self.assertAPISuccess(resp) self.assertEqual(resp['current_quest']['id'], self.quest.id) self.assertEqual(resp['quests'][0]['id'], self.old_quest.id) resp = self.api_post('/api/quests/dismiss_quest', {'quest_id': self.old_quest.id}, user=user) self.assertAPISuccess(resp) resp = self.api_post('/api/quests/inbox', user=user) self.assertTrue('current_quest' in resp) self.assertEqual(len(resp['quests']), 0)
def test_quest_inbox_with_invite(self): inviter = create_user() self.api_post('/api/quest_invites/invite_user_to_quest', { 'username': self.user.username, 'quest_id': self.old_quest.id, }, user=inviter) resp = self.api_post('/api/quests/inbox', user=self.user) self.assertAPISuccess(resp) quests = resp['quests'] self.assertEqual(quests[0]['id'], self.old_quest.id)
def recipients(): actor = create_user() cmt = create_quest_comment(author=author) sticker = CommentSticker.objects.create( comment=cmt, timestamp=time.time(), type_id=settings.STAR_STICKER_TYPE_ID, user=actor, ip='0.0.0.0', ) r = action_recipients('starred', actor, sticker, channel='PushNotificationChannel') return (r, cmt)
def post_quest_comment(cls, quest=None, author=None, playback_data=None): from drawquest.tests.tests_helpers import create_current_quest, create_user if author is None: author = create_user() if quest is None: quest = create_current_quest() params = {"quest_id": quest.id, "content_id": create_content().id} resp = cls.api_post("/api/quest_comments/post", params, user=author) if playback_data is not None: save_playback_data(cmt, playback_data) return resp
def test_streak_rewards(self): user = create_user() with override_service('time', FakeTimeProvider): def post(): quest = create_current_quest() def rewards(): resp = self.api_post( '/api/quest_comments/rewards_for_posting', {'quest_id': quest.id}, user=user) self.assertAPISuccess(resp) print resp return resp['rewards'] before = rewards() self._post(user=user, quest=quest) after = rewards() Services.time.t += 60 * 60 * 24 return ( before, after, ) current_streak = 0 streaks = [3, 10, 100] for _ in xrange( 4): #TODO should be higher but this is just too slow. before, after = post() for streak in streaks: msg = 'After posting this, the current streak would be: {}'.format( current_streak + 1) if (current_streak + 1) == streak: self.assertTrue('streak_' + str(streak) in before, msg) self.assertFalse('streak_' + str(streak) in after, msg) else: self.assertFalse('streak_' + str(streak) in before, msg) current_streak += 1
def post_quest_comment(cls, quest=None, author=None, playback_data=None): from drawquest.tests.tests_helpers import create_current_quest, create_user if author is None: author = create_user() if quest is None: quest = create_current_quest() params = { 'quest_id': quest.id, 'content_id': create_content().id, } resp = cls.api_post('/api/quest_comments/post', params, user=author) if playback_data is not None: save_playback_data(cmt, playback_data) return resp
def test_set_plist_playback_data(self): user = create_user() cmt = self._post(user=user) playback = '{1: 2}' p = dict( aString="Doodah", aList=["A", "B", 12, 32.1, [1, 2, 3]], aFloat = 0.1, anInt = 728, ) s = StringIO() pl = writePlist(p, s) s.seek(0) resp = self.post('/api/playback/set_playback_data', data={ 'comment_id': cmt['id'], 'playback_plist_data': File(s, 'whatever.xml'), }, user=user) self._check(cmt['id'], json.backend_dumps(p))
def test_set_plist_playback_data(self): user = create_user() cmt = self._post(user=user) playback = '{1: 2}' p = dict( aString="Doodah", aList=["A", "B", 12, 32.1, [1, 2, 3]], aFloat=0.1, anInt=728, ) s = StringIO() pl = writePlist(p, s) s.seek(0) resp = self.post('/api/playback/set_playback_data', data={ 'comment_id': cmt['id'], 'playback_plist_data': File(s, 'whatever.xml'), }, user=user) self._check(cmt['id'], json.backend_dumps(p))
def test_streak_rewards(self): user = create_user() def post(): quest = create_current_quest() def rewards(): resp = self.api_post('/api/quest_comments/rewards_for_posting', {'quest_id': quest.id}, user=user) self.assertAPISuccess(resp) return resp['rewards'] before = rewards() self._post(user=user, quest=quest) after = rewards() return ( before, after, ) current_streak = 0 streaks = [3, 10, 100] for _ in xrange(11): before, after = post() for streak in streaks: msg = 'After posting this, the current streak would be: {}'.format( current_streak + 1) if (current_streak + 1) == streak: self.assertTrue('streak_' + str(streak) in before, msg) self.assertFalse('streak_' + str(streak) in after, msg) else: self.assertFalse('streak_' + str(streak) in before, msg) current_streak += 1
def after_setUp(self): self.author = create_user()
def after_setUp(self): self.old_quest = create_current_quest() self.quest = create_current_quest() self.user = create_user() knobs.ONBOARDING_QUEST_ID = self.quest.id
def test_loads(self): self.assertAPISuccess( self.api_post('/api/feed/followee_comments', user=create_user()))
def after_setUp(self): self.user = create_user() self.actor = create_user()
def create_staff(user_cls=User): user = create_user(user_cls=user_cls) user.is_staff = True user.save() return user
def after_setUp(self): self.user = create_user()
def test_twitter_privacy_default(self): state = self.api_post('/api/heavy_state_sync', user=create_user()) self.assertEqual(state['twitter_privacy'], None)
def create_rich_user(*args, **kwargs): # Currency is limited but has unlimited inventory user = create_user(*args, **kwargs) # Make em' rich. user.kv.stickers.currency.increment(100) return user