def test_recommended_going_query(self): # Creates the available journeys with driver... user1 = UserFactory() residence1 = ResidenceFactory(user=user1, position=Point(883877.34, 547084.05, srid=DEFAULT_PROJECTED_SRID)) user2 = UserFactory() residence2 = ResidenceFactory(user=user2, position=Point(882823.07, 545542.48, srid=DEFAULT_PROJECTED_SRID)) campus = CampusFactory() user3 = UserFactory() residence3 = ResidenceFactory(user=user3, position=Point(865621.24, 545274.90, srid=DEFAULT_PROJECTED_SRID)) template = JourneyTemplateFactory(user=user1, driver=user1, residence=residence1, campus=campus) JourneyFactory(template=template) template = JourneyTemplateFactory(user=user2, driver=user2, residence=residence2, campus=campus) JourneyFactory(template=template) template = JourneyTemplateFactory(user=user3, driver=user3, residence=residence3, campus=campus) JourneyFactory(template=template) user4 = UserFactory() residence4 = ResidenceFactory( user=user4, position=Point(882532.74, 545437.43, srid=DEFAULT_PROJECTED_SRID), distance=2500 ) template = JourneyTemplateFactory(user=user4, residence=residence4, campus=campus) JourneyFactory(template=template) self.assertEquals(Journey.objects.recommended( user=user4, kind=GOING ).count(), 2)
def test_available_going_query(self): # Creates the available journeys with driver... user1 = UserFactory() residence1 = ResidenceFactory(user=user1, position=Point( 883877.34, 547084.05, srid=DEFAULT_PROJECTED_SRID)) user2 = UserFactory() residence2 = ResidenceFactory(user=user2, position=Point( 882823.07, 545542.48, srid=DEFAULT_PROJECTED_SRID)) campus = CampusFactory() JourneyFactory(user=user1, driver=user1, residence=residence1, campus=campus) JourneyFactory(user=user2, driver=user2, residence=residence2, campus=campus) # Creates a journey without driver user3 = UserFactory() residence3 = ResidenceFactory(user=user3, position=Point( 882454.58, 545877.33, srid=DEFAULT_PROJECTED_SRID)) JourneyFactory(user=user3, residence=residence3, campus=campus) self.assertEquals( Journey.objects.available(user=user3, kind=GOING).count(), 2)
def test_recommended_journeys(self): # Creates the available journeys with driver... user1 = UserFactory() residence1 = ResidenceFactory(user=user1, position=Point( 883877.34, 547084.05, srid=DEFAULT_PROJECTED_SRID)) user2 = UserFactory() residence2 = ResidenceFactory(user=user2, position=Point( 882823.07, 545542.48, srid=DEFAULT_PROJECTED_SRID)) campus = CampusFactory() user3 = UserFactory() residence3 = ResidenceFactory(user=user3, position=Point( 865621.24, 545274.90, srid=DEFAULT_PROJECTED_SRID)) template = JourneyTemplateFactory(user=user1, driver=user1, residence=residence1, campus=campus) JourneyFactory(template=template) template = JourneyTemplateFactory(user=user2, driver=user2, residence=residence2, campus=campus) JourneyFactory(template=template) template = JourneyTemplateFactory(user=user3, driver=user3, residence=residence3, campus=campus) JourneyFactory(template=template) user4 = UserFactory() residence4 = ResidenceFactory(user=user4, position=Point( 882532.74, 545437.43, srid=DEFAULT_PROJECTED_SRID), distance=2500) template = JourneyTemplateFactory(user=user4, residence=residence4, campus=campus) journey = JourneyFactory(template=template) # Make query... url = "/api/v1/journeys/{}/recommended/".format(journey.pk) self.client.force_authenticate(user=user4) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = json.loads(response.content.decode('utf-8')) self.assertEquals(2, len(response_data['results']))
def test_get_messages(self): user = UserFactory() origin = ResidenceFactory(user=user) destination = CampusFactory() journey1 = JourneyFactory(user=user, residence=origin, campus=destination) journey2 = JourneyFactory(user=user, residence=origin, campus=destination) journey3 = JourneyFactory(user=UserFactory(), residence=origin, campus=destination) [MessageFactory(user=user, journey=journey1) for _ in range(2)] [ MessageFactory(user=UserFactory(), journey=journey1) for _ in range(2) ] [MessageFactory(user=user, journey=journey2) for _ in range(2)] [ MessageFactory(user=UserFactory(), journey=journey2) for _ in range(2) ] [ MessageFactory(user=UserFactory(), journey=journey3) for _ in range(2) ] url = "/api/v1/messages/" self.client.force_authenticate(user=user) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = json.loads(response.content.decode('utf-8')) self.assertEquals(8, len(response_data['results']))
def test_destination(self): user = UserFactory() origin = ResidenceFactory(user=user) destination = CampusFactory() template = JourneyTemplateFactory(user=user, residence=origin, campus=destination, kind=GOING) journey = JourneyFactory(template=template) self.assertEquals(journey.destination, destination)
def _make_journey(user=None, kind=GOING): user = UserFactory() if user is None else user origin = ResidenceFactory(user=user) destination = CampusFactory() return JourneyFactory(user=user, residence=origin, campus=destination, kind=kind)
def test_available_query(self): # Creates the available journeys with driver... user1 = UserFactory() residence1 = ResidenceFactory(user=user1, position=Point(883877.34, 547084.05, srid=DEFAULT_PROJECTED_SRID)) user2 = UserFactory() residence2 = ResidenceFactory(user=user2, position=Point(882823.07, 545542.48, srid=DEFAULT_PROJECTED_SRID)) campus = CampusFactory() template = JourneyTemplateFactory(user=user1, driver=user1, residence=residence1, campus=campus, kind=RETURN) JourneyFactory(template=template) template = JourneyTemplateFactory(user=user2, driver=user2, residence=residence2, campus=campus) JourneyFactory(template=template) # Creates a journey without driver user3 = UserFactory() residence3 = ResidenceFactory(user=user3, position=Point(865621.24, 545274.90, srid=DEFAULT_PROJECTED_SRID)) template = JourneyTemplateFactory(user=user3, residence=residence3, campus=campus, kind=RETURN) JourneyFactory(template=template) self.assertEquals(Journey.objects.available(user=user3).count(), 2)
def test_get_residences(self): user = UserFactory() residences = [ResidenceFactory(user=user) for _ in range(5)] url = "/api/v1/residences/" self.client.force_authenticate(user=user) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = json.loads(response.content.decode('utf-8')) self.assertEquals(len(residences), len(response_data['results']))
def test_origin(self): user = UserFactory() origin = ResidenceFactory(user=user) destination = CampusFactory() journey = JourneyFactory(user=user, residence=origin, campus=destination, kind=GOING) self.assertEquals(journey.origin, origin)
def _make_journey(kind=GOING): user = UserFactory() origin = ResidenceFactory(user=user) destination = CampusFactory() template = JourneyTemplateFactory(user=user, residence=origin, campus=destination, kind=kind) return JourneyFactory(template=template, departure=template.departure, arrival=template.arrival)
def test_nearby_query(self): # Creates the available journeys with driver... user1 = UserFactory() residence1 = ResidenceFactory(user=user1, position=Point(883877.34, 547084.05, srid=DEFAULT_PROJECTED_SRID)) user2 = UserFactory() residence2 = ResidenceFactory(user=user2, position=Point(882823.07, 545542.48, srid=DEFAULT_PROJECTED_SRID)) campus = CampusFactory() user3 = UserFactory() residence3 = ResidenceFactory(user=user3, position=Point(865621.24, 545274.90, srid=DEFAULT_PROJECTED_SRID)) template = JourneyTemplateFactory(user=user1, driver=user1, residence=residence1, campus=campus) JourneyFactory(template=template) template = JourneyTemplateFactory(user=user2, driver=user2, residence=residence2, campus=campus) JourneyFactory(template=template) template = JourneyTemplateFactory(user=user3, driver=user3, residence=residence3, campus=campus) JourneyFactory(template=template) point = Point(882532.74, 545437.43, srid=DEFAULT_PROJECTED_SRID) self.assertEquals(Journey.objects.nearby( geometry=point, distance=D(m=2500) ).count(), 2)
def test_smart_create_no_transport(self): """Test smart create of a journey without transport.""" user = UserFactory() origin = ResidenceFactory(user=user) destination = CampusFactory() template = JourneyTemplate.objects.smart_create( user=user, origin=origin, destination=destination, departure=timezone.now() + datetime.timedelta(days=1) ) journeys = expand(template) journey = journeys[0] self.assertEquals(Journey.objects.count(), 1) self.assertEquals(Journey.objects.first(), journey)
def test_not_allowed_messages(self): user = UserFactory() origin = ResidenceFactory(user=user) destination = CampusFactory() journey = JourneyFactory(user=user, residence=origin, campus=destination) [MessageFactory(user=user, journey=journey) for _ in range(5)] [MessageFactory(user=UserFactory(), journey=journey) for _ in range(5)] url = "/api/v1/journeys/{}/messages/".format(journey.pk) self.client.force_authenticate(user=UserFactory()) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) response_data = json.loads(response.content.decode('utf-8')) self.assertEquals(0, len(response_data['results']))
def test_create_message_owner_user(self): user = UserFactory() origin = ResidenceFactory(user=user) destination = CampusFactory() journey = JourneyFactory(user=user, residence=origin, campus=destination) self.assertEquals(0, journey.messages.count()) data = { "content": "Hello!", "journey": journey.pk, } self.client.force_authenticate(user=user) url = "/api/v1/messages/" response = self.client.post(url, data=data) self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEquals(1, journey.messages.count())
def test_smart_create(self): """Test smart create of a journey with transport.""" user = UserFactory() transport = TransportFactory(user=user) origin = ResidenceFactory(user=user) destination = CampusFactory() template = JourneyTemplate.objects.smart_create( user=user, origin=origin, destination=destination, departure=timezone.now() + datetime.timedelta(days=1), transport=transport ) journeys = expand(template) journey = journeys[0] self.assertEquals(Journey.objects.count(), 1) self.assertEquals(Journey.objects.first(), journey) self.assertEquals(journey.free_places, transport.default_places) self.assertEquals(journey.current_free_places(), transport.default_places) self.assertIsNotNone(journey.driver) self.assertEquals(user, journey.driver)