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_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, )
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, )
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, )