class BasicDataTest(TestCase): fixtures = [ "staging_users.json", "staging_videos.json", "staging_teams.json" ] def setUp(self): self.superuser, created = User.objects.get_or_create( username='******', is_superuser=True) self.user1 = User.objects.all()[0] self.user2 = User.objects.all()[1] self.superuser2, x = User.objects.get_or_create(username='******', is_superuser=True) self.regular_user = User.objects.filter( is_active=True, is_superuser=False).exclude( pk__in=[x.pk for x in [self.user1, self.user2]])[0] self.team1 = Team(name='test11', slug='test11') self.team1.save() self.team1_member = TeamMember(team=self.team1, user=self.user1) self.team1_member.save() self.team2 = Team(name='test22', slug='test22') self.team2.save() self.team2_member = TeamMember(team=self.team2, user=self.user2) self.team2_member.save() self.video = Video.objects.all()[0] for user in User.objects.all(): user.set_password(user.username) user.save()
def create_team(request, username): """ Display the TeamCreationForm """ if request.method == 'POST': form = TeamCreationForm(request.POST) if form.is_valid() and request.user.pk == form.cleaned_data['creator']: team = User.objects.create_user(form.cleaned_data['name']) team_creator_attrs = dict( team=team, user=request.user, permission=4, creator=True ) team_creator = TeamMember(**team_creator_attrs) team_creator.save() try: profile = team.get_profile() except Profile.DoesNotExist: profile = Profile(user=team) profile.organization = True profile.creator_id = request.user.pk profile.save() HttpResponseRedirect(reverse('update_team', args=(form.cleaned_data["name"],))) else: form = TeamCreationForm(initial={'creator': request.user.pk}) return render_to_response('teams/team_create.html', {'form': form, 'username': username}, context_instance=RequestContext(request))
def test_application_new(self): def _get_counts(member): email_to = "%s" % (member.user.email) return Message.objects.filter(user=member.user).count() , \ len([x for x in mail.outbox if email_to in x.recipients()]) team, created = Team.objects.get_or_create(name='test', slug='test') applying_user = UserFactory() # creates dummy users: for x in xrange(0, 4): user = UserFactory( username="******" % x, email="*****@*****.**" % x, notify_by_email=True, notify_by_message=True, ) tm = TeamMember(team=team, user=user) if x == 0: tm.role = TeamMember.ROLE_OWNER owner = tm elif x == 1: tm.role = TeamMember.ROLE_ADMIN admin = tm elif x == 2: tm.role = TeamMember.ROLE_MANAGER manager = tm elif x == 3: tm.role = TeamMember.ROLE_CONTRIBUTOR contributor = tm tm.save() # now make sure we count previsou messages owner_messge_count_1, owner_email_count_1 = _get_counts(owner) admin_messge_count_1, admin_email_count_1 = _get_counts(admin) manager_messge_count_1, manager_email_count_1 = _get_counts(manager) contributor_messge_count_1, contributor_email_count_1 = _get_counts( contributor) # now delete and check numers app = Application.objects.create(team=team, user=applying_user) app.save() messages.tasks.application_sent.run(app.pk) # owner and admins should receive email + message owner_messge_count_2, owner_email_count_2 = _get_counts(owner) self.assertEqual(owner_messge_count_1 + 1, owner_messge_count_2) self.assertEqual(owner_email_count_1 + 1, owner_email_count_2) admin_messge_count_2, admin_email_count_2 = _get_counts(admin) self.assertEqual(admin_messge_count_1 + 1, admin_messge_count_2) self.assertEqual(admin_email_count_1 + 1, admin_email_count_2) # manager shoud not manager_messge_count_2, manager_email_count_2 = _get_counts(manager) self.assertEqual(manager_messge_count_1, manager_messge_count_2) self.assertEqual(manager_email_count_1, manager_email_count_2) # contributor shoud not contributor_messge_count_2, contributor_email_count_2 = _get_counts( contributor) self.assertEqual(contributor_messge_count_1, contributor_messge_count_2) self.assertEqual(contributor_email_count_1, contributor_email_count_2)
def test_member_join(self): def _get_counts(member): email_to = "%s" % (member.user.email) return Message.objects.filter(user=member.user).count() , \ len([x for x in mail.outbox if email_to in x.recipients()]) team, created = Team.objects.get_or_create(name='test', slug='test') # creates dummy users: for x in xrange(0, 5): user = UserFactory( username="******" % x, email="*****@*****.**" % x, ) tm = TeamMember(team=team, user=user) if x == 0: tm.role = TeamMember.ROLE_OWNER owner = tm elif x == 1: tm.role = TeamMember.ROLE_ADMIN admin = tm elif x == 2: tm.role = TeamMember.ROLE_MANAGER manager = tm elif x == 3: tm.role = TeamMember.ROLE_CONTRIBUTOR contributor = tm if x < 4: # don't save the last role until we have counts tm.save() else: tm.role = TeamMember.ROLE_CONTRIBUTOR # now make sure we count previsou messages owner_messge_count_1, owner_email_count_1 = _get_counts(owner) admin_messge_count_1, admin_email_count_1 = _get_counts(admin) manager_messge_count_1, manager_email_count_1 = _get_counts(manager) contributor_messge_count_1, contributor_email_count_1 = _get_counts( contributor) # save the last team member and check that each group has appropriate counts tm.save() messages.tasks.team_member_new(tm.pk) # owner and admins should receive email + message owner_messge_count_2, owner_email_count_2 = _get_counts(owner) self.assertEqual(owner_messge_count_1 + 1, owner_messge_count_2) self.assertEqual(owner_email_count_1 + 1, owner_email_count_2) admin_messge_count_2, admin_email_count_2 = _get_counts(admin) self.assertEqual(admin_messge_count_1 + 1, admin_messge_count_2) self.assertEqual(admin_email_count_1 + 1, admin_email_count_2) # manager shoud not manager_messge_count_2, manager_email_count_2 = _get_counts(manager) self.assertEqual(manager_messge_count_1, manager_messge_count_2) self.assertEqual(manager_email_count_1, manager_email_count_2) # contributor shoud not contributor_messge_count_2, contributor_email_count_2 = _get_counts( contributor) self.assertEqual(contributor_messge_count_1, contributor_messge_count_2) self.assertEqual(contributor_email_count_1, contributor_email_count_2)
def test_member_leave(self): return # fix me now def _get_counts(member): email_to = "%s" % (member.user.email) return Message.objects.filter(user=member.user).count() , \ len([x for x in mail.outbox if email_to in x.recipients()]) team, created = Team.objects.get_or_create(name='test', slug='test') # creates dummy users: for x in xrange(0, 5): user, member = User.objects.get_or_create( username="******" % x, email="*****@*****.**" % x, notify_by_email=True, ) tm = TeamMember(team=team, user=user) if x == 0: tm.role = TeamMember.ROLE_OWNER owner = tm elif x == 1: tm.role = TeamMember.ROLE_ADMIN admin = tm elif x == 2: tm.role = TeamMember.ROLE_MANAGER manager = tm elif x == 3: tm.role = TeamMember.ROLE_CONTRIBUTOR contributor = tm if x < 4: # don't save the last role until we have counts tm.save() else: tm.role = TeamMember.ROLE_CONTRIBUTOR tm.save() # now make sure we count previsou messages owner_messge_count_1, owner_email_count_1 = _get_counts(owner) admin_messge_count_1, admin_email_count_1 = _get_counts(admin) manager_messge_count_1, manager_email_count_1 = _get_counts(manager) contributor_messge_count_1, contributor_email_count_1 = _get_counts( contributor) # now delete and check numers tm_user = tm.user tm_user_pk = tm.user.pk team_pk = tm.team.pk tm.delete() notifier.team_member_leave(team_pk, tm_user_pk) # save the last team member and check that each group has appropriate counts # owner and admins should receive email + message owner_messge_count_2, owner_email_count_2 = _get_counts(owner) self.assertEqual(owner_messge_count_1 + 1, owner_messge_count_2) self.assertEqual(owner_email_count_1 + 1, owner_email_count_2) admin_messge_count_2, admin_email_count_2 = _get_counts(admin) self.assertEqual(admin_messge_count_1 + 1, admin_messge_count_2) self.assertEqual(admin_email_count_1 + 1, admin_email_count_2) # manager shoud not manager_messge_count_2, manager_email_count_2 = _get_counts(manager) self.assertEqual(manager_messge_count_1, manager_messge_count_2) self.assertEqual(manager_email_count_1, manager_email_count_2) # contributor shoud not contributor_messge_count_2, contributor_email_count_2 = _get_counts( contributor) self.assertEqual(contributor_messge_count_1, contributor_messge_count_2) self.assertEqual(contributor_email_count_1, contributor_email_count_2) # now, this has to show up on everybody activitis fed action = Action.objects.get(team=team, user=tm_user, action_type=Action.MEMBER_LEFT) self.assertTrue( Action.objects.for_user(tm.user).filter(pk=action.pk).exists()) self.assertTrue( Action.objects.for_user(owner.user).filter(pk=action.pk).exists()) self.assertTrue( Action.objects.for_user( manager.user).filter(pk=action.pk).exists()) self.assertTrue( Action.objects.for_user( contributor.user).filter(pk=action.pk).exists()) self.assertTrue( Action.objects.for_user(admin.user).filter(pk=action.pk).exists())
class TestCommands(TestCase): fixtures = ["test.json"] def setUp(self): self.team = Team(name='test', slug='test') self.team.save() self.user = User.objects.all()[:1].get() self.user.is_active = True self.user.changes_notification = True self.user.email = '*****@*****.**' self.user.save() self.tm = TeamMember(team=self.team, user=self.user) self.tm.save() v1 = Video.objects.all()[:1].get() self.tv1 = TeamVideo(team=self.team, video=v1, added_by=self.user) self.tv1.save() v2 = Video.objects.exclude(pk=v1.pk)[:1].get() self.tv2 = TeamVideo(team=self.team, video=v2, added_by=self.user) self.tv2.save() def test_new_team_video_notification(self): #mockup for send_templated_email to test context of email import utils send_templated_email = utils.send_templated_email def send_templated_email_mockup(to, subject, body_template, body_dict, *args, **kwargs): send_templated_email_mockup.context = body_dict send_templated_email(to, subject, body_template, body_dict, *args, **kwargs) utils.send_templated_email = send_templated_email_mockup #check initial data self.assertEqual(self.team.teamvideo_set.count(), 2) self.assertEqual(self.team.users.count(), 1) today = datetime.today() date = today - timedelta(hours=24) #test notification about two new videos TeamVideo.objects.filter(pk__in=[self.tv1.pk, self.tv2.pk]).update(created=datetime.today()) self.assertEqual(TeamVideo.objects.filter(created__gte=date).count(), 2) mail.outbox = [] call_command('new_team_video_notification') self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].to, [self.user.email]) self.assertEqual(len(send_templated_email_mockup.context['team_videos']), 2) #test if user turn off notification self.user.is_active = False self.user.save() mail.outbox = [] call_command('new_team_video_notification') self.assertEqual(len(mail.outbox), 0) self.user.is_active = True self.user.changes_notification = False self.user.save() mail.outbox = [] call_command('new_team_video_notification') self.assertEqual(len(mail.outbox), 0) self.user.changes_notification = True self.user.save() self.tm.changes_notification = False self.tm.save() mail.outbox = [] call_command('new_team_video_notification') self.assertEqual(len(mail.outbox), 0) self.tm.changes_notification = True self.tm.save() #test notification if one video is new past_date = today - timedelta(days=2) TeamVideo.objects.filter(pk=self.tv1.pk).update(created=past_date) self.assertEqual(TeamVideo.objects.filter(created__gte=date).count(), 1) mail.outbox = [] call_command('new_team_video_notification') self.assertEqual(len(mail.outbox), 1) self.assertEqual(len(send_templated_email_mockup.context['team_videos']), 1) self.assertEqual(send_templated_email_mockup.context['team_videos'][0], self.tv2) #test notification if all videos are old TeamVideo.objects.filter(pk__in=[self.tv1.pk, self.tv2.pk]).update(created=past_date) self.assertEqual(TeamVideo.objects.filter(created__gte=date).count(), 0) mail.outbox = [] call_command('new_team_video_notification') self.assertEqual(len(mail.outbox), 0)