def test_create_lookuppointofinterest_model_data_no_result(self):
        # no valid clinic
        Location_Sender.vumi_client = lambda x: LoggingSender('go_http.test')
        Metric_Sender.vumi_client = lambda x: LoggingSender('go_http.test')

        post_data = {
            "search": {
                "mmc": "true",
                "hiv": "false"
            },
            "response": {
                "type": "SMS",
                "to_addr": "+27123",
                "template": "Your nearest x is: {{ results }}"
            },
            "location": self.create_location(29.0000000, -33.0000000)
        }
        response = self.client.post('/clinicfinder/requestlookup/',
                                    json.dumps(post_data),
                                    content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        d = LookupPointOfInterest.objects.last()
        self.assertEqual(d.search["mmc"], "true")
        self.assertEqual(d.search["hiv"], "false")
        point = Point(29.0000000, -33.0000000)
        self.assertEqual(d.location.point, point)
        self.assertEqual(d.response["results"], "")
    def test_create_lookuppointofinterest_model_data_2_result(self):
        # 4 valid clinics, shows two
        Location_Sender.vumi_client = lambda x: LoggingSender('go_http.test')
        Metric_Sender.vumi_client = lambda x: LoggingSender('go_http.test')

        post_data = {
            "search": {
                "hct": "true"
            },
            "response": {
                "type": "SMS",
                "to_addr": "+27123",
                "template": "Your nearest x is: {{ results }}"
            },
            "location": self.create_location(18.71208, -33.85105)
        }
        response = self.client.post('/clinicfinder/requestlookup/',
                                    json.dumps(post_data),
                                    content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        d = LookupPointOfInterest.objects.last()
        self.assertEqual(
            d.response["results"], "Harmonie Clinic (0219806185/6205) "
            "AND Hazendal Satellite Clinic (216969920)")
    def test_create_lbsrequest_model_data_no_result(self):
        Location_Sender.vumi_client = lambda x: LoggingSender('go_http.test')
        Metric_Sender.vumi_client = lambda x: LoggingSender('go_http.test')
        LBS_Lookup.add_allowed_msisdn = self.stub_add_allowed_msisdn
        LBS_Lookup.get_location = self.stub_get_location_no_result

        post_data = {
            "search": {
                "msisdn": "27123"
            },
            "pointofinterest":
            self.create_poi_lookup('requestlookup', {"mmc": "true"})
        }
        response = self.client.post('/clinicfinder/lbsrequest/',
                                    json.dumps(post_data),
                                    content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        lbs = LBSRequest.objects.last()
        # Search for MMC saved
        self.assertEqual(lbs.pointofinterest.search["mmc"], "true")
        self.assertEqual(lbs.search["msisdn"], "27123")
        # LBS Call denied
        self.assertEqual(lbs.response["lookup_code"], "201")
        # LBS Call Result did not create new point
        lpoi = LookupPointOfInterest.objects.last()
        self.assertEqual(lpoi.location, None)
    def test_create_lbsrequest_model_data(self):
        Location_Sender.vumi_client = lambda x: LoggingSender('go_http.test')
        Metric_Sender.vumi_client = lambda x: LoggingSender('go_http.test')
        LBS_Lookup.add_allowed_msisdn = self.stub_add_allowed_msisdn
        LBS_Lookup.get_location = self.stub_get_location_get_result

        post_data = {
            "search": {
                "msisdn": "27123"
            },
            "pointofinterest":
            self.create_poi_lookup('requestlookup', {"mmc": "true"})
        }
        response = self.client.post('/clinicfinder/lbsrequest/',
                                    json.dumps(post_data),
                                    content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        lbs = LBSRequest.objects.last()
        # Search for MMC saved
        self.assertEqual(lbs.pointofinterest.search["mmc"], "true")
        self.assertEqual(lbs.search["msisdn"], "27123")
        # LBS Call worked
        self.assertEqual(lbs.response["lookup_code"], "101")
        # LBS Call Result created new point
        lpoi = LookupPointOfInterest.objects.last()
        point = Point(17.9145812988280005, -32.7461242675779979)
        self.assertEqual(lpoi.location.point, point)
        self.assertEqual(lpoi.response["results"],
                         "Seapoint Clinic (Seapoint)")
 def test_fire_metric(self):
     Metric_Sender.vumi_client = lambda x: LoggingSender('go_http.test')
     result = metric_sender.delay(metric="sms.noresults",
                                  value=1,
                                  agg="sum")
     self.assertTrue(result.successful())
     self.assertEquals(result.get()["reason"], "Metrics published")
class TestLoggingSender(TestCase):

    def setUp(self):
        self.sender = LoggingSender('go_http.test')
        self.handler = RecordingHandler()
        logger = logging.getLogger('go_http.test')
        logger.setLevel(logging.INFO)
        logger.addHandler(self.handler)

    def check_logs(self, msg, levelno=logging.INFO):
        [log] = self.handler.logs
        self.assertEqual(log.msg, msg)
        self.assertEqual(log.levelno, levelno)

    def test_send_text(self):
        result = self.sender.send_text("to-addr-1", "Hello!")
        self.assertEqual(result, {
            "message_id": result["message_id"],
            "to_addr": "to-addr-1",
            "content": "Hello!",
        })
        self.check_logs("Message: 'Hello!' sent to 'to-addr-1'")

    def test_fire_metric(self):
        result = self.sender.fire_metric("metric-1", 5.1, agg="max")
        self.assertEqual(result, {
            "success": True,
            "reason": "Metrics published",
        })
        self.check_logs("Metric: 'metric-1' [max] -> 5.1")

    def test_fire_metric_default_agg(self):
        result = self.sender.fire_metric("metric-1", 5.2)
        self.assertEqual(result, {
            "success": True,
            "reason": "Metrics published",
        })
        self.check_logs("Metric: 'metric-1' [last] -> 5.2")
    def test_create_forward_result(self):
        # 4 valid clinics, shows two
        Location_Sender.vumi_client = lambda x: LoggingSender('go_http.test')

        post_data = {
            "search": {
                "hct": "true"
            },
            "response": {
                "type": "SMS",
                "to_addr": "+27123",
                "template": "Your nearest x is: {{ results }}"
            },
            "location": self.create_location(18.458404541015, -33.92578125)
        }
        response = self.client.post('/clinicfinder/requestlookup/',
                                    json.dumps(post_data),
                                    content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        d = LookupPointOfInterest.objects.last()
        self.assertEqual(d.response["results"], "Clinic One (Tel One) "
                         "AND Clinic Two (Tel Two)")
Пример #8
0
 def setUp(self):
     self.sender = LoggingSender('go_http.test')
     self.handler = RecordingHandler()
     logger = logging.getLogger('go_http.test')
     logger.setLevel(logging.INFO)
     logger.addHandler(self.handler)
Пример #9
0
class TestLoggingSender(TestCase):

    def setUp(self):
        self.sender = LoggingSender('go_http.test')
        self.handler = RecordingHandler()
        logger = logging.getLogger('go_http.test')
        logger.setLevel(logging.INFO)
        logger.addHandler(self.handler)

    def check_logs(self, msg, levelno=logging.INFO):
        [log] = self.handler.logs
        self.assertEqual(log.msg, msg)
        self.assertEqual(log.levelno, levelno)

    def test_send_text(self):
        result = self.sender.send_text("to-addr-1", "Hello!")
        self.assertEqual(result, {
            "message_id": result["message_id"],
            "to_addr": "to-addr-1",
            "content": "Hello!",
        })
        self.check_logs("Message: 'Hello!' sent to 'to-addr-1'")

    def test_send_text_with_session_event(self):
        result = self.sender.send_text(
            "to-addr-1", "Hello!", session_event='close')
        self.assertEqual(result, {
            "message_id": result["message_id"],
            "to_addr": "to-addr-1",
            "content": "Hello!",
            "session_event": "close",
        })
        self.check_logs(
            "Message: 'Hello!' sent to 'to-addr-1'"
            " [session_event: close]")

    def test_send_voice(self):
        result = self.sender.send_voice("to-addr-1", "Hello!")
        self.assertEqual(result, {
            "message_id": result["message_id"],
            "to_addr": "to-addr-1",
            "content": "Hello!",
        })
        self.check_logs("Message: 'Hello!' sent to 'to-addr-1'")

    def test_send_voice_with_session_event(self):
        result = self.sender.send_voice(
            "to-addr-1", "Hello!", session_event='close')
        self.assertEqual(result, {
            "message_id": result["message_id"],
            "to_addr": "to-addr-1",
            "content": "Hello!",
            "session_event": "close",
        })
        self.check_logs(
            "Message: 'Hello!' sent to 'to-addr-1'"
            " [session_event: close]")

    def test_send_voice_with_speech_url(self):
        result = self.sender.send_voice(
            "to-addr-1", "Hello!", speech_url='http://example.com/voice.ogg')
        self.assertEqual(result, {
            "message_id": result["message_id"],
            "to_addr": "to-addr-1",
            "content": "Hello!",
            "helper_metadata": {
                "voice": {
                    "speech_url": "http://example.com/voice.ogg",
                },
            }
        })
        self.check_logs(
            "Message: 'Hello!' sent to 'to-addr-1'"
            " [voice: {'speech_url': 'http://example.com/voice.ogg'}]")

    def test_send_voice_with_wait_for(self):
        result = self.sender.send_voice(
            "to-addr-1", "Hello!", wait_for="#")
        self.assertEqual(result, {
            "message_id": result["message_id"],
            "to_addr": "to-addr-1",
            "content": "Hello!",
            "helper_metadata": {
                "voice": {
                    "wait_for": "#",
                },
            }
        })
        self.check_logs(
            "Message: 'Hello!' sent to 'to-addr-1'"
            " [voice: {'wait_for': '#'}]")

    def test_fire_metric(self):
        result = self.sender.fire_metric("metric-1", 5.1, agg="max")
        self.assertEqual(result, {
            "success": True,
            "reason": "Metrics published",
        })
        self.check_logs("Metric: 'metric-1' [max] -> 5.1")

    def test_fire_metric_default_agg(self):
        result = self.sender.fire_metric("metric-1", 5.2)
        self.assertEqual(result, {
            "success": True,
            "reason": "Metrics published",
        })
        self.check_logs("Metric: 'metric-1' [last] -> 5.2")