def test_was_published_recently_with_old_question(self): ''' should return false if published more than 24hrs ago ''' time = timezone.now() + datetime.timedelta(days=30) old_question = Question(pub_date=time) self.assertEqual(old_question.was_published_recently(), False)
def test_was_published_recently_with_future_question(self): ''' should return false if published in the Future ''' time = timezone.now() + datetime.timedelta(days=30) future_question = Question(pub_date=time) self.assertEqual(future_question.was_published_recently(), False)
def test_was_published_recently_with_recent_question(self): ''' should return true if published within 24hrs ''' time = timezone.now() + datetime.timedelta(days=30) recent_question = Question(pub_date=time) self.assertEqual(recent_question.was_published_recently(), False)
def test_was_published_recently_with_recent_question(self): """ was_published_recently() should return True for questions whose pub_date is within the last day """ time = timezone.now() - datetime.timedelta(hours=1) recent_question = Question(pub_date=time) self.assertEqual(recent_question.was_published_recently(), True)
def test_was_published_recently_with_future_question(self): """ was_published_recently() should return False for questions whose pub_date is in the future """ time = timezone.now() + datetime.timedelta(days=30) future_question = Question(pub_date=time) self.assertEqual(future_question.was_published_recently(), False)
def test_was_published_recently_with_old_question(self): """ was_published_recently() should return False for questions whose pub_date is older than 1 day """ time = timezone.now() - datetime.timedelta(days=30) old_question = Question(pub_date=time) self.assertEqual(old_question.was_published_recently(), False)
def ask_question(request): if request.method == 'POST': que_title = request.POST.get('question_title') que_detail = request.POST.get('question_detail') question = Question(question_title=que_title,question_text=que_detail,author=request.user,pub_date=timezone.now()) question.save() return redirect(reverse('myapp:home')) return render(request,'myapp/ask_question.html')
def test_was_published_recently_with_recent_question(self): """ was_published_recently() returns True for questions whose pub_date is within the last day. """ time = timezone.now() - datetime.timedelta( hours=23, minutes=59, seconds=59) recent_question = Question(pub_date=time) self.assertIs(recent_question.was_published_recently(), True)
def setUp(self): Question.objects.all().delete() self.backend = PersistantBackend(slug="MockBackend") self.backend.save() self.reporter = Reporter(alias="ReporterName") self.reporter.save() self.pconnection = PersistantConnection(backend=self.backend, reporter=self.reporter, identity="1000", governorate = 2, district = 4) self.pconnection.save() self.pconnection1 = PersistantConnection(backend=self.backend, reporter=self.reporter, identity="10001", governorate = 7, district = 8) self.pconnection1.save() self.reporter.connections.add(self.pconnection) self.question1 = Question(text = "question1") self.question1.is_first = True self.question1.save() self.question2 = Question(text = "question2") self.question2.save() self.question3 = Question(text = "question3") self.question3.save() self.question1.next_question = self.question2 self.question2.next_question = self.question3 self.question1.save() self.question2.save() self.question3.save() self.setup_choices(self.question1) self.setup_choices(self.question2) self.setup_choices(self.question3) q = Questionnaire(trigger = "trigger", max_retries=3) q.save() DemographicParser(questionnaire=q, name='age', regex='[0-9]+', order=1, type='i').save() DemographicParser(questionnaire=q, name='gender', regex='m|f|male|female', order=2, type='c').save() r = Registration(phone = self.pconnection) r.save() r1 = Registration(phone = self.pconnection) r1.save()
def get_queryset(self): questions = Question.objects.all() if self.request.GET: form = self.form_class(self.request.GET) else: form = self.form_class() # Handle different possible orderings of question list if 'sortby' in self.request.GET: questions = Question.sorted_by(self.request.GET['sortby']) if 'tag' in self.kwargs: tag_list = self.kwargs['tag'].split('+') questions = questions.filter(tags__name__in=tag_list).distinct() if form.is_valid(): questions = questions.filter(content_rawtext__icontains=form.cleaned_data['keyword']) return questions
def get(self, request, id=None): if id: question = get_object_or_404(Question, id=id) poll_form = PollForm(instance=question) choices = question.choice_set.all() choice_forms = [ ChoiceForm(prefix=str(choice.id), instance=choice) for choice in choices ] template = 'polls/edit_poll.html' else: poll_form = PollForm(instance=Question()) choice_forms = [ ChoiceForm(prefix=str(x), instance=Choice()) for x in range(3) ] template = 'polls/new_poll.html' context = {'poll_form': poll_form, 'choice_forms': choice_forms} return render(request, template, context)
def post(self, request, id=None): context = {} if id: return self.put(request, id) poll_form = PollForm(request.POST, instance=Question()) choice_forms = [ ChoiceForm(request.POST, prefix=str(x), instance=Choice()) for x in range(0, 3) ] if poll_form.is_valid() and all([cf.is_valid() for cf in choice_forms]): new_poll = poll_form.save(commit=False) new_poll.created_by = request.user new_poll.save() for cf in choice_forms: new_choice = cf.save(commit=False) new_choice.question = new_poll new_choice.save() return HttpResponseRedirect('/poll/list/') context = {'poll_form': poll_form, 'choice_forms': choice_forms} return render(request, 'polls/new_poll.html', context)
class UserSessionTest(TestCase): apps = (poll_App,) def setUp(self): Question.objects.all().delete() self.backend = PersistantBackend(slug="MockBackend") self.backend.save() self.reporter = Reporter(alias="ReporterName") self.reporter.save() self.pconnection = PersistantConnection(backend=self.backend, reporter=self.reporter, identity="1000", governorate = 2, district = 4) self.pconnection.save() self.pconnection1 = PersistantConnection(backend=self.backend, reporter=self.reporter, identity="10001", governorate = 7, district = 8) self.pconnection1.save() self.reporter.connections.add(self.pconnection) self.question1 = Question(text = "question1") self.question1.is_first = True self.question1.save() self.question2 = Question(text = "question2") self.question2.save() self.question3 = Question(text = "question3") self.question3.save() self.question1.next_question = self.question2 self.question2.next_question = self.question3 self.question1.save() self.question2.save() self.question3.save() self.setup_choices(self.question1) self.setup_choices(self.question2) self.setup_choices(self.question3) q = Questionnaire(trigger = "trigger", max_retries=3) q.save() DemographicParser(questionnaire=q, name='age', regex='[0-9]+', order=1, type='i').save() DemographicParser(questionnaire=q, name='gender', regex='m|f|male|female', order=2, type='c').save() r = Registration(phone = self.pconnection) r.save() r1 = Registration(phone = self.pconnection) r1.save() def setup_choices(self,question): choice1 = Choice(code= 'a',question=question, text="a") choice2 = Choice(code= 'b',question=question, text="a") choice3 = Choice(code= 'c',question=question, text="a") choice1.save() choice2.save() choice3.save() def test_open_new_session(self): session = UserSession.open(self.pconnection) user = session.user user.save() self.assertEquals(session.question, None) def test_respond_with_first_question_on_new_session_for_any_message(self): session = UserSession.open(self.pconnection) user = session.user user.save() self.assertEquals(session.respond("trigger m 16"), str(self.question1)) def test_correct_response_to_question_sends_next_question(self): session = UserSession.open(self.pconnection) user = session.user user.save() self.assertEquals(session.question, None) response1 = session.respond("trigger m 16") self.assertEquals(session.question, self.question1) response2 = session.respond("a") self.assertEquals(response2, str(self.question2)) self.assertEquals(session.question, self.question2) def test_wrong_response_to_question_sends_error(self): session = UserSession.open(self.pconnection) user = session.user user.save() self.assertEquals(session.question, None) response1 = session.respond("trigger f 16") self.assertEquals(session.question, self.question1) response2 = session.respond("django") self.assertEquals(response2, "error_parsing_response") self.assertEquals(session.question, self.question1) def test_retrieve_ongoing_session_at_question2(self): session = UserSession.open(self.pconnection) user = session.user user.save() session.user = user session.question = self.question2 session.save() session = UserSession.open(self.pconnection) self.assertEquals(session.respond("b"), str(self.question3)) self.assertEquals(session.question, self.question3) def test_close_ongoing_session_at_trigger(self): session = UserSession.open(self.pconnection) user = session.user user.save() session.user = user session.question = self.question2 self.assertEquals(session.respond("c"), str(self.question3)) self.assertEquals(session.question, self.question3) self.assertEquals(session.respond("trigger 13 m"), str(self.question1)) self.assertEquals(session.question, self.question1) def test_close_session_on_last_answer(self): session = UserSession.open(self.pconnection) user = session.user user.save() session.user = user session.question = self.question3 self.assertEquals(session.respond("c"), "thanks") self.assertEquals(session.question, None) self.assertEquals(session.user, None) def test_user_interaction_is_saved_when_successful(self): initial_number_of_responses = len(UserResponse.objects.all()) initial_number_of_users = len(User.objects.all()) session = UserSession.open(self.pconnection1) session.respond('trigger 14 f') self.assertEquals(len(User.objects.all()), initial_number_of_users + 1) session.respond('a') self.assertEquals(len(UserResponse.objects.all()), initial_number_of_responses + 1) def test_end_session_on_reaching_max_num_allowed_retries(self): session = UserSession.open(self.pconnection1) user = session.user user.save() session.user = user session.question = self.question1 session.respond('t') session.respond('t') session.respond('t') self.assertEquals(session.question, None) def test_user_demographics_saved_when_present(self): session = UserSession.open(self.pconnection1) session.respond('trigger 13 f') latest_user = User.objects.all().order_by('-id')[0] self.assertEquals(latest_user.age, 13) self.assertEquals(latest_user.gender, 'f') def test_user_location_from_registration(self): session = UserSession.open(self.pconnection) session.respond('trigger 14 f') latest_user = User.objects.all().order_by('-id')[0] self.assertEquals(latest_user.governorate, 2) self.assertEquals(latest_user.district, 4) def test_junk_trigger_message(self): backend = PersistantBackend(slug="MockBackend1") backend.save() reporter = Reporter(alias="ReporterName1") reporter.save() pconnection = PersistantConnection(backend=backend, reporter=reporter, identity="1001") pconnection.save() session = UserSession.open(pconnection) self.assertEquals(session.respond('trigger junk'), TRIGGER_INCORRECT_MESSAGE ) def test_junk_message(self): session = UserSession.open(self.pconnection) self.assertEquals(session.respond('junk'), TRIGGER_INCORRECT_MESSAGE ) def test_recreate_user_if_demographic_data_changes(self): session = UserSession.open(self.pconnection) session.respond("trigger m 16") session.respond("trigger m 12") self.assertEquals(len(User.objects.all()), 2) def test_reset_session_on_sending_trigger(self): session = UserSession.open(self.pconnection) session.respond("trigger m 16") session = UserSession.open(self.pconnection) self.assertEquals(session.question, self.question1) session.respond("trigger f 12") self.assertEquals(session.question, self.question1) session = UserSession.open(self.pconnection) session.respond("a") self.assertEquals(session.question, self.question2) def test_less_than_required_choices_reminds_user(self): self.question1.max_choices = 2 self.question1.save() session = UserSession.open(self.pconnection) session.respond("trigger m 16") self.assertEquals(session.question.max_choices, 2) error = session.respond("a") self.assertEquals(error, "err_less_thank_expected_choices")
class UserSessionTest(TestCase): apps = (poll_App,) def setUp(self): Question.objects.all().delete() self.backend = PersistantBackend(slug="MockBackend") self.backend.save() self.reporter = Reporter(alias="ReporterName") self.reporter.save() self.pconnection = PersistantConnection(backend=self.backend, reporter=self.reporter, identity="1000") self.pconnection.save() self.pconnection1 = PersistantConnection(backend=self.backend, reporter=self.reporter, identity="10001") self.pconnection1.save() self.reporter.connections.add(self.pconnection) self.question1 = Question(text="question1") self.question1.is_first = True self.question1.save() self.question2 = Question(text="question2") self.question2.save() self.question3 = Question(text="question3") self.question3.save() self.question1.next_question = self.question2 self.question2.next_question = self.question3 self.question1.save() self.question2.save() self.question3.save() self.setup_choices(self.question1) self.setup_choices(self.question2) self.setup_choices(self.question3) q = Questionnaire(trigger="trigger", max_retries=3) q.save() DemographicParser(questionnaire=q, name="age", regex="[0-9]+", order=1, type="i").save() DemographicParser(questionnaire=q, name="gender", regex="m|f|male|female", order=2, type="c").save() self.user = User(connection=self.pconnection) self.user.save() r = Registration(governorate=3, district=4, phone=self.pconnection) r.save() def setup_choices(self, question): choice1 = Choice(code="a", question=question, text="a") choice2 = Choice(code="b", question=question, text="a") choice3 = Choice(code="c", question=question, text="a") choice1.save() choice2.save() choice3.save() def test_open_new_session(self): session = UserSession.open(self.pconnection) self.assertEquals(session.question, None) def test_respond_with_first_question_on_new_session_for_any_message(self): session = UserSession.open(self.pconnection) self.assertEquals(session.respond("text"), str(self.question1)) def test_correct_response_to_question_sends_next_question(self): session = UserSession.open(self.pconnection) self.assertEquals(session.question, None) response1 = session.respond("text") self.assertEquals(session.question, self.question1) response2 = session.respond("a") self.assertEquals(response2, str(self.question2)) self.assertEquals(session.question, self.question2) def test_wrong_response_to_question_sends_error(self): session = UserSession.open(self.pconnection) self.assertEquals(session.question, None) response1 = session.respond("text") self.assertEquals(session.question, self.question1) response2 = session.respond("django") self.assertEquals(response2, "error_parsing_response") self.assertEquals(session.question, self.question1) def test_retrieve_ongoing_session_at_question2(self): session = UserSession.open(self.pconnection) session.user = self.user session.question = self.question2 session.save() session = UserSession.open(self.pconnection) self.assertEquals(session.respond("b"), str(self.question3)) self.assertEquals(session.question, self.question3) def test_close_ongoing_session_at_trigger(self): session = UserSession.open(self.pconnection) session.user = self.user session.question = self.question2 session.save() session = UserSession.open(self.pconnection) self.assertEquals(session.respond("c"), str(self.question3)) self.assertEquals(session.question, self.question3) self.assertEquals(session.respond("trigger 13 m"), str(self.question1)) self.assertEquals(session.question, self.question1) def test_close_session_on_last_answer(self): session = UserSession.open(self.pconnection) session.question = self.question3 session.user = self.user self.assertEquals(session.respond("c"), "thanks") self.assertEquals(session.question, None) def test_user_interaction_is_saved_when_successful(self): initial_number_of_responses = len(UserResponse.objects.all()) initial_number_of_users = len(User.objects.all()) session = UserSession.open(self.pconnection1) session.respond("trigger 14 f") self.assertEquals(len(User.objects.all()), initial_number_of_users + 1) session.respond("a") self.assertEquals(len(UserResponse.objects.all()), initial_number_of_responses + 1) def test_end_session_on_reaching_max_num_allowed_retries(self): session = UserSession.open(self.pconnection1) session.question = self.question1 session.user = self.user session.respond("t") session.respond("t") session.respond("t") self.assertEquals(session.question, None) def test_user_demographics_saved_when_present(self): session = UserSession.open(self.pconnection1) session.respond("trigger 13 f") latest_user = User.objects.all().order_by("-id")[0] self.assertEquals(latest_user.age, 13) self.assertEquals(latest_user.gender, "f") def test_user_location_from_registration(self): session = UserSession.open(self.pconnection) session.respond("trigger 14 f") latest_user = User.objects.all().order_by("-id")[0] self.assertEquals(latest_user.governorate, 3) self.assertEquals(latest_user.district, 4) def test_junk_trigger_message(self): backend = PersistantBackend(slug="MockBackend1") backend.save() reporter = Reporter(alias="ReporterName1") reporter.save() pconnection = PersistantConnection(backend=backend, reporter=reporter, identity="1001") pconnection.save() session = UserSession.open(pconnection) self.assertEquals(session.respond("trigger junk"), TRIGGER_INCORRECT_MESSAGE) def test_junk_message(self): backend = PersistantBackend(slug="MockBackend1") backend.save() reporter = Reporter(alias="ReporterName1") reporter.save() pconnection = PersistantConnection(backend=backend, reporter=reporter, identity="1001") pconnection.save() session = UserSession.open(pconnection) self.assertEquals(session.respond("junk"), TRIGGER_INCORRECT_MESSAGE)
# import os # # from django.conf import settings # from django_tutorial import settings as django_tutorial from poll.models import Question import datetime from django.utils import timezone # # settings.configure(default_settings=django_tutorial, DEBUG=True) # os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_tutorial.settings') future_question = Question(pub_date=timezone.now() + datetime.timedelta(days=30)) future_question.was_published_recently() # def test(): # future_question = Question(pub_date=timezone.now() + datetime.timedelta(days=30)) # future_question.was_published_recently() # if __name__ == "__main__": # test()
def test_was_published_recently_with_future_question(self): time = timezone.now() + datetime.timedelta(days=30) future_question = Question(pub_date=time) self.assertIs(future_question.was_published_recently(), False)
return result_str def random_para(lim_char): para = "" count = 0 while count <= lim_char: i = random.randint(3, 8) count += i word = random_string(i) para = para + " " + word if len(para) > lim_char: para = para[:lim_char] return para.strip() for i in range(30): title = random_para(50) desc = random_para(200) pub_date = timezone.now() - datetime.timedelta(days=random.randint(0, 10)) featured = True if i % 2 == 0 else False q = Question(title=title, desc=desc, pub_date=pub_date, featured=featured) q.save() for j in range(4): choice_text = random_para(100) votes = random.randint(0, 8) c = q.choice_set.create(choice_text=choice_text, votes=votes)