class PollTopicsTest(TestCase):
    def setUp(self):
        self.view = PollTopicsApiView()

    def test_that_only_active_polls_are_returned(self):
        contact, contact_created = Contact.objects.get_or_create(name='John Jonny')
        user, user_created = User.objects.get_or_create(username="******")
        an_hour_ago = datetime.datetime.now() - datetime.timedelta(hours=1)
        two_hours_ago = datetime.datetime.now() - datetime.timedelta(hours=2)
        thirty_minutes_ago = datetime.datetime.now() - datetime.timedelta(minutes=30)

        poll, poll_created = Poll.objects.get_or_create(name="Test Poll", question="Is working?", user=user,
                                                        start_date=two_hours_ago)
        second_poll, poll_created = Poll.objects.get_or_create(name="Test Poll 2", question="Is working 2 ?", user=user,
                                                               start_date=an_hour_ago, end_date=thirty_minutes_ago)
        third_poll, poll_created = Poll.objects.get_or_create(name="Test Poll 3", question="Is working 3 ?", user=user)
        poll.contacts = [contact]
        poll.save()

        second_poll.contacts = [contact]
        second_poll.save()

        third_poll.contacts = [contact]
        third_poll.save()
        poll_topics = self.view.get_polls_for_contact(contact)
        self.assertListEqual([{"poll_id": poll.id, "label": "Test Poll"}], poll_topics)
class PollTopicsTest(TestCase):
    def setUp(self):
        self.view = PollTopicsApiView()

    def test_that_only_active_polls_are_returned(self):
        contact, contact_created = Contact.objects.get_or_create(
            name='John Jonny')
        user, user_created = User.objects.get_or_create(username="******")
        an_hour_ago = datetime.datetime.now() - datetime.timedelta(hours=1)
        two_hours_ago = datetime.datetime.now() - datetime.timedelta(hours=2)
        thirty_minutes_ago = datetime.datetime.now() - datetime.timedelta(
            minutes=30)

        poll, poll_created = Poll.objects.get_or_create(
            name="Test Poll",
            question="Is working?",
            user=user,
            start_date=two_hours_ago)
        second_poll, poll_created = Poll.objects.get_or_create(
            name="Test Poll 2",
            question="Is working 2 ?",
            user=user,
            start_date=an_hour_ago,
            end_date=thirty_minutes_ago)
        third_poll, poll_created = Poll.objects.get_or_create(
            name="Test Poll 3", question="Is working 3 ?", user=user)
        poll.contacts = [contact]
        poll.save()

        second_poll.contacts = [contact]
        second_poll.save()

        third_poll.contacts = [contact]
        third_poll.save()
        poll_topics = self.view.get_polls_for_contact(contact)
        self.assertListEqual([{
            "poll_id": poll.id,
            "label": "Test Poll"
        }], poll_topics)
class PollTopicsTestCase(TestCase):
    def setUp(self):
        self.view = PollTopicsApiView()
        self.request_factory = RequestFactory()

    def test_that_post_returns_405_status_code(self):
        fake_request = self.request_factory.post("/")
        response = self.view.post(fake_request)
        self.assertEqual(405, response.status_code)

    def test_that_if_the_backend_does_not_exist_you_get_a_404(self):
        fake_request = self.request_factory.get("/", **{"backend": "console", "user_address": "999"})
        with self.assertRaises(Http404):
            self.view.dispatch(fake_request)

    def setup_get_request(self, backend, connection):
        self.view.get_backend = Mock(return_value=backend)
        self.view.get_connection = Mock(return_value=connection)
        self.view.validate_credentials = Mock(return_value=True)
        fake_request = self.request_factory.get("/", **{"backend": "console", "user_address": "999",
                                                        "HTTP_AUTHORIZATION": (
                                                            "Basic %s" % base64.b64encode("who:why"))})
        return fake_request

    def test_that_if_the_user_address_does_not_exist_you_get_a_404(self):
        backend = Backend(id=89)
        connection = Connection(identity=999, backend=backend)
        fake_request = self.setup_get_request(backend, connection)
        with self.assertRaises(Http404):
            self.view.dispatch(fake_request)

    def test_that_if_there_are_no_polls_for_the_user_it_returns_success_and_an_empty_list(self):
        backend = Backend(id=89)
        connection = Connection(identity=999, backend=backend, contact=Contact())
        fake_request = self.setup_get_request(backend, connection)
        self.view.get_polls_for_contact = Mock(return_value=[])
        response = self.view.dispatch(fake_request)
        data = json.loads(response.content)
        self.assertEqual(True, data['success'])
        self.assertEqual([], data['poll_topics'])
Esempio n. 4
0
    url(r"^pulse/(?P<period>\w+)/$", pulse, name='pulse_json'),
    url(r"^map-cloud/$", map_cloud, name='map_cloud'),
    url(r"^upload-contacts", upload_users, name='upload_users'),
    url(r"^access/dashboards/$", access_dashboards, name='access_dashboards'),
    url(r"^assign-group", assign_group, name="assign_group"),
    url(r'^start_poll_export/(\d+)/$',
        start_poll_export,
        name="start_poll_export"),
    url(r"^backend/vumi/$", VumiBackendView.as_view(backend_name="vumi")),
    url(r"^api/v1/ureporters/registration/steps$",
        RegistrationStepsView.as_view()),
    url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)$",
        ViewUReporter.as_view(),
        name="view_ureporter_api"),
    url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/polls/current$",
        ViewCurrentPoll.as_view(),
        name="view_current_poll_api"),
    url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/poll/(?P<poll_id>\d+)/responses/$",
        SubmitPollResponses.as_view(),
        name="submit_poll_response_api"),
    url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/polls/topics$",
        PollTopicsApiView.as_view(),
        name="poll_topics_api"),
    url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/reports/$",
        SubmitReportApiView.as_view(),
        name="submit_report_api"),
    url(
        r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/poll/(?P<poll_id>\d+)/summary$",
        PollSummary.as_view()),
)
 def setUp(self):
     self.view = PollTopicsApiView()
Esempio n. 6
0
                                       ('', False, '', None)],
                       }, name="ureport-contact2"),
                       (r'^api/', include(v1_api.urls)),
                       url(r'^comfirm/(?P<key>.+)/$', comfirm_message_sending, name="comfirm"),
                       url(r'^comfirmmessages/(?P<key>.+)/$', comfirmmessages, name="comfirm-messages"),
                       url(r"^dumpreport/(\d+)/$", generate_poll_dump_report),
                       url(r"^districtreport/(\d+)/$", generate_per_district_report),
                       url(r"^pulse/$", pulse, name='pulse_json'),
                       url(r"^pulse/(?P<period>\w+)/$", pulse, name='pulse_json'),
                       url(r"^map-cloud/$", map_cloud, name='map_cloud'),
                       url(r"^upload-contacts", upload_users, name='upload_users'),
                       url(r"^access/dashboards/$", access_dashboards, name='access_dashboards'),
                       url(r"^assign-group", assign_group, name="assign_group"),
                       url(r'^start_poll_export/(\d+)/$', start_poll_export, name="start_poll_export"),
                       url(r"^backend/vumi/$", VumiBackendView.as_view(backend_name="vumi")),
                       url(r"^api/v1/ureporters/registration/steps$", RegistrationStepsView.as_view()),
                       url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)$", ViewUReporter.as_view(),
                           name="view_ureporter_api"),
                       url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/polls/current$",
                           ViewCurrentPoll.as_view(), name="view_current_poll_api"),
                       url(
                           r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/poll/(?P<poll_id>\d+)/responses/$",
                           SubmitPollResponses.as_view(), name="submit_poll_response_api"),
                       url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/polls/topics$",
                           PollTopicsApiView.as_view(), name="poll_topics_api"),
                       url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/reports/$",
                           SubmitReportApiView.as_view(), name="submit_report_api"),
                       url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/poll/(?P<poll_id>\d+)/summary$", PollSummary.as_view()),

)
 def setUp(self):
     self.view = PollTopicsApiView()
     self.request_factory = RequestFactory()
 def setUp(self):
     self.view = PollTopicsApiView()
 def setUp(self):
     self.view = PollTopicsApiView()
     self.request_factory = RequestFactory()