def test_response_form_display(self): self.assertEqual( None, ResponseForm(self.anon, self.question) ) self.assertNotEqual( None, ResponseForm(self.joe, self.question) ) self.assertNotEqual( None, ResponseForm(self.admin, self.question) ) # the default is to let others comment on # questions, even if they aren't staff and # didn't ask the question (KNOWLEDGE_FREE_RESPONSE) self.assertNotEqual( None, ResponseForm(self.bob, self.question) ) # lock the question... self.question.lock() self.assertEqual( None, ResponseForm(self.admin, self.question) )
def test_sending_alerts_dedupe(self): """ One question by joe, two responses by admin: bob responds. """ ######## SETUP self.assertTrue(settings.ALERTS) RESPONSE_POST = { 'body': 'This is the response body friend!', 'status': 'inherit', 'alert': settings.ALERTS, } # another admin response response = ResponseForm(self.admin, self.question, RESPONSE_POST).save() mail.outbox = [] # reset self.assertEqual(len(mail.outbox), 0) ######## TEARDOWN RESPONSE_POST = { 'body': 'This is the response body friend!', 'alert': settings.ALERTS, } # question is by joe, first response is by admin form = ResponseForm(self.bob, self.question, RESPONSE_POST) self.assertTrue(form.is_valid()) response = form.save() self.assertTrue(response.alert) self.assertEqual(len(mail.outbox), 2) # one for joe, one for admin
def test_form_saving(self): QUESTION_POST = { 'title': 'This is a title friend!', 'body': 'This is the body friend!', 'status': 'private' } form = QuestionForm(self.joe, QUESTION_POST) self.assertTrue(form.is_valid()) question = form.save() self.assertEquals(question.status, 'private') self.assertEquals(question.name, None) self.assertEquals(question.email, None) self.assertEquals(question.title, 'This is a title friend!') self.assertEquals(question.body, 'This is the body friend!') self.assertEquals(question.user, self.joe) RESPONSE_POST = {'body': 'This is the response body friend!'} form = ResponseForm(self.joe, question, RESPONSE_POST) self.assertTrue(form.is_valid()) response = form.save() self.assertEquals(response.status, 'inherit') self.assertEquals(response.name, None) self.assertEquals(response.email, None) self.assertEquals(response.body, 'This is the response body friend!') self.assertEquals(response.user, self.joe)
def test_ALLOW_ANONYMOUS(self): self.assertFalse(settings.ALLOW_ANONYMOUS) self.assertEqual(None, QuestionForm(self.anon)) self.assertEqual(None, ResponseForm(self.anon, self.question)) ############# flip setting ############## settings.ALLOW_ANONYMOUS = not settings.ALLOW_ANONYMOUS ############# flip setting ############## self.assertNotEqual(None, QuestionForm(self.anon)) self.assertNotEqual(None, ResponseForm(self.anon, self.question)) form = QuestionForm(self.anon) self.assertNotIn('status', form.fields.keys()) # missing the name/email... QUESTION_POST = { 'title': 'This is a title friend!', 'body': 'This is the body friend!' } form = QuestionForm(self.anon, QUESTION_POST) self.assertFalse(form.is_valid()) QUESTION_POST = { 'name': 'Test Guy', 'email': '*****@*****.**', 'title': 'This is a title friend!', 'body': 'This is the body friend!' } form = QuestionForm(self.anon, QUESTION_POST) self.assertTrue(form.is_valid()) question = form.save() # question has no user and is public by default self.assertFalse(question.user) self.assertEquals(question.name, 'Test Guy') self.assertEquals(question.email, '*****@*****.**') self.assertEquals(question.status, 'public') ############# flip setting ############## settings.ALLOW_ANONYMOUS = not settings.ALLOW_ANONYMOUS
def test_sending_alerts_normal(self): """ One question by joe, one response by admin: bob responds. """ self.assertTrue(settings.ALERTS) self.assertEqual(len(mail.outbox), 0) RESPONSE_POST = { 'body': 'This is the response body friend!', 'alert': settings.ALERTS, } # question is by joe, first response is by admin form = ResponseForm(self.bob, self.question, RESPONSE_POST) self.assertTrue(form.is_valid()) response = form.save() self.assertTrue(response.alert) self.assertEqual(len(mail.outbox), 2) # one for joe, one for admin
def knowledge_thread(request, question_id, slug=None, template='django_knowledge/thread.html'): if settings.LOGIN_REQUIRED and not request.user.is_authenticated(): return HttpResponseRedirect(settings.LOGIN_URL + "?next=%s" % request.path) try: question = Question.objects.can_view(request.user)\ .get(id=question_id) except Question.DoesNotExist: if Question.objects.filter(id=question_id).exists() and \ hasattr(settings, 'LOGIN_REDIRECT_URL'): return redirect(settings.LOGIN_REDIRECT_URL) else: raise Http404 responses = question.get_responses(request.user) if request.path != question.get_absolute_url(): return redirect(question.get_absolute_url(), permanent=True) form = ResponseForm(request.user, question, request.POST or None) if request.method == 'POST' and form.is_valid(): if request.user.is_authenticated( ) or not form.cleaned_data['phone_number']: form.save() return redirect(question.get_absolute_url()) return render( request, template, { 'request': request, 'question': question, 'responses': responses, 'allowed_mods': ALLOWED_MODS, 'form': form, 'categories': Category.objects.all(), 'BASE_TEMPLATE': settings.BASE_TEMPLATE, })
def test_question_form_display(self): self.assertEqual( None, QuestionForm(self.anon) ) self.assertNotEqual( None, QuestionForm(self.joe) ) self.assertNotEqual( None, ResponseForm(self.admin, self.question) )
def test_FREE_RESPONSE(self): self.assertTrue(settings.FREE_RESPONSE) # joe authored the question, it is private so any user can respond... self.assertFalse(ResponseForm(self.anon, self.question)) self.assertTrue(ResponseForm(self.bob, self.question)) self.assertTrue(ResponseForm(self.joe, self.question)) self.assertTrue(ResponseForm(self.admin, self.question)) ############# flip setting ############## settings.FREE_RESPONSE = not settings.FREE_RESPONSE ############# flip setting ############## # ...now bob can't respond! self.assertFalse(ResponseForm(self.anon, self.question)) self.assertFalse(ResponseForm(self.bob, self.question)) self.assertTrue(ResponseForm(self.joe, self.question)) self.assertTrue(ResponseForm(self.admin, self.question)) ############# flip setting ############## settings.FREE_RESPONSE = not settings.FREE_RESPONSE