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)
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)
def test_process_new_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": {}}, ) 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=False) 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(), 2) first_assertions = { "date": arbitrary_time + datetime.timedelta(seconds=1), "source": arbitrary_source, "location": Point(-122, 45), } for k, v in first_assertions.items(): self.assertEqual(getattr(actual_points[0], k), v) second_assertions = { "date": arbitrary_time + datetime.timedelta(seconds=2), "source": arbitrary_source, "location": Point(-123, 44), } for k, v in second_assertions.items(): self.assertEqual(getattr(actual_points[1], k), v) self.assertFalse(models.LocationSource.objects.get(pk=arbitrary_source.pk).active)
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, )