예제 #1
0
    def test_process_existing_source(self):
        arbitrary_url = 'http://www.go.com/101'
        arbitrary_route_name = 'Something'
        arbitrary_source = models.LocationSource.objects.create(
            name='Whatnot',
            user=self.user,
            type=self.source_type,
            active=True,
            data={
                'url': arbitrary_url,
                'known_points': {
                    'alpha': 'arbitrary_value'
                },
            })
        arbitrary_document = MagicMock()
        arbitrary_time = datetime.datetime.utcnow().replace(tzinfo=utc)
        arbitrary_points = [{
            'lat': -122,
            'lng': 45,
            'key': 'alpha',
            'time': 1
        }, {
            'lat': -123,
            'lng': 44,
            'key': 'beta',
            'time': 2
        }]

        consumer = RunmeterConsumer(arbitrary_source)
        consumer._get_document = MagicMock(return_value=arbitrary_document)
        consumer.get_start_time = MagicMock(return_value=arbitrary_time)
        consumer.get_route_name = MagicMock(return_value=arbitrary_route_name)
        consumer.get_points = MagicMock(return_value=arbitrary_points)
        consumer.is_active = MagicMock(return_value=True)

        consumer.process()

        consumer._get_document.assert_called_with(arbitrary_url)
        consumer.get_start_time.assert_called_with(arbitrary_document)
        consumer.get_route_name.assert_called_with(arbitrary_document)
        consumer.get_points.assert_called_with(arbitrary_document,
                                               arbitrary_time)

        actual_points = models.LocationSnapshot.objects.order_by('date')
        self.assertEqual(actual_points.count(), 1)

        assertions = {
            'date': arbitrary_time + datetime.timedelta(seconds=2),
            'source': arbitrary_source,
            'location': Point(-123, 44)
        }
        for k, v in assertions.items():
            self.assertEqual(getattr(actual_points[0], k), v)

        self.assertTrue(
            models.LocationSource.objects.get(pk=arbitrary_source.pk).active)
예제 #2
0
    def test_get_route_name(self):
        document = self._get_sample_document()
        consumer = RunmeterConsumer(None)
        actual_value = consumer.get_route_name(document)
        expected_value = 'Cycle'

        self.assertEqual(
            actual_value,
            expected_value,
        )
예제 #3
0
    def test_get_start_time(self):
        document = self._get_sample_document()
        consumer = RunmeterConsumer(None)
        actual_value = consumer.get_start_time(document)
        expected_value = datetime.datetime(2013, 9, 6, 0, 51,
                                           29).replace(tzinfo=utc)

        self.assertEqual(
            actual_value,
            expected_value,
        )
예제 #4
0
    def test_get_points(self):
        arbitrary_time = datetime.datetime.utcnow().replace(tzinfo=utc)
        document = self._get_sample_document()
        consumer = RunmeterConsumer(None)
        actual_value = consumer.get_points(document, arbitrary_time)

        with open(
                os.path.join(
                    os.path.dirname(__file__),
                    'files/expected_points.json',
                )) as incoming:
            expected_value = json.loads(incoming.read())

        self.assertEqual(
            actual_value,
            expected_value,
        )