Skip to content

Commit

Permalink
Merge ea1054d into 2dbb0b0
Browse files Browse the repository at this point in the history
  • Loading branch information
sawyer1997 committed Dec 6, 2023
2 parents 2dbb0b0 + ea1054d commit 23b66cb
Show file tree
Hide file tree
Showing 4 changed files with 333 additions and 8 deletions.
Binary file modified .coverage
Binary file not shown.
335 changes: 333 additions & 2 deletions matching/tests.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,334 @@
# from django.test import TestCase
from datetime import datetime

# Create your tests here.
from django.test import TestCase, Client
from django.contrib.auth.models import User
from django.urls import reverse
from trip.models import UserTrip, Trip
from django.contrib.messages import get_messages


class TestMatchingViews(TestCase):
def setUp(self):
self.client = Client()
self.password = "matching_password"
self.user1 = User.objects.create_user(
username="matching_user",
email="matching_user@nyu.edu",
password=self.password,
)
self.user1.userprofile.dob = datetime(1997, 8, 22)
self.user1.save()
self.user2 = User.objects.create_user(
username="matching_user2",
email="matching_user2@nyu.edu",
password=self.password,
)
self.user2.userprofile.dob = datetime(1997, 8, 22)
self.user2.save()
self.user3 = User.objects.create_user(
username="matching_user3",
email="matching_user3@nyu.edu",
password=self.password,
)
self.user3.userprofile.dob = datetime(1997, 8, 22)
self.user3.save()
city = [("Bangalore", "Bangalore")]
country = [("India", "India")]
companion = ("Companion", "Companion")
trip_destination = Trip.objects.create(
destination_city=city, destination_country=country
)
self.utrip1 = UserTrip.objects.create(
start_trip=datetime(2023, 12, 18),
end_trip=datetime(2023, 12, 28),
user=self.user1,
travel_type=companion,
trip=trip_destination,
)
self.utrip2 = UserTrip.objects.create(
start_trip=datetime(2023, 12, 14),
end_trip=datetime(2023, 12, 24),
travel_type=companion,
user=self.user2,
trip=trip_destination,
)
self.utrip3 = UserTrip.objects.create(
start_trip=datetime(2023, 12, 20),
end_trip=datetime(2023, 12, 30),
travel_type=companion,
user=self.user3,
trip=trip_destination,
)

def test_show_potential_matches(self):
user1login = self.client.login(
username="matching_user",
password=self.password,
)
self.assertTrue(user1login)
response = self.client.get(
reverse(
"matching:show_potential_matches", kwargs={"utrip_id": self.utrip1.id}
)
)
matching_users = [mu["user"] for mu in response.context["matching_users"]]

self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(template_name="matching/list_potential_matches.html")
self.assertNotIn(self.user1, matching_users)
self.assertIn(self.user2, matching_users)
self.assertIn(self.user3, matching_users)
self.client.logout()
user = self.client.session.get("_auth_user_id")
self.assertIsNone(user)

user2login = self.client.login(
username="matching_user2",
password=self.password,
)
self.assertTrue(user2login)
response = self.client.get(
reverse(
"matching:show_potential_matches", kwargs={"utrip_id": self.utrip2.id}
)
)
matching_users = [mu["user"] for mu in response.context["matching_users"]]
self.assertEqual(response.status_code, 200)
self.assertIn(self.user1, matching_users)
self.assertNotIn(self.user2, matching_users)
self.assertIn(self.user3, matching_users)

response = self.client.get(
reverse(
"matching:show_potential_matches", kwargs={"utrip_id": self.utrip1.id}
),
follow=True,
)
self.assertEqual(response.status_code, 403)
self.assertTemplateUsed(template_name="trip/view_trips.html")
self.client.logout()
user = self.client.session.get("_auth_user_id")
self.assertIsNone(user)

def test_send_matching_request(self):
user1login = self.client.login(
username="matching_user",
password=self.password,
)
self.assertTrue(user1login)
response = self.client.post(
reverse("matching:send_request", kwargs={"utrip_id": self.utrip1.id}),
{"receiver_uid": self.user2.id, "receiver_utrip_id": self.utrip2.id},
follow=True,
)
messages = list(get_messages(response.wsgi_request))
self.assertIn(response.status_code, [200, 302])
self.assertTrue(messages)
self.assertEqual(messages[0].message, "Matching request sent to user")
resp_up = response.context["matching_users"]
for mu in resp_up:
if mu["user"] == self.user2:
self.assertTrue(mu["sent_match"], False)
break
self.utrip2.is_active = False
self.utrip2.save()
response = self.client.post(
reverse("matching:send_request", kwargs={"utrip_id": self.utrip1.id}),
{"receiver_uid": self.user2.id, "receiver_utrip_id": self.utrip2.id},
follow=True,
)
messages = list(get_messages(response.wsgi_request))
self.assertIn(response.status_code, [200, 302])
self.assertEqual(
messages[0].message, "The receiver or their trip is not active anymore."
)
self.client.logout()

self.utrip2.is_active = True
self.utrip2.save()
user2login = self.client.login(
username="matching_user2",
password=self.password,
)
self.assertTrue(user2login)
response = self.client.post(
reverse("matching:send_request", kwargs={"utrip_id": self.utrip2.id}),
{
"receiver_uid": self.user1.id,
"receiver_utrip_id": self.utrip1.id,
},
follow=True,
)
self.assertIn(response.status_code, [200, 302])
messages = list(get_messages(response.wsgi_request))
self.assertTrue(len(messages), 1)
self.assertEqual(
messages[0].message,
"The receiver might already have sent a matching "
"request to you, please check your pending matches",
)
response = self.client.post(
reverse("matching:send_request", kwargs={"utrip_id": self.utrip1.id}),
{
"receiver_uid": self.user1.id,
"receiver_utrip_id": self.utrip1.id,
},
follow=True,
)
self.assertEqual(response.status_code, 403)
messages = list(get_messages(response.wsgi_request))
self.assertTrue(len(messages), 1)
self.assertEqual(
messages[0].message,
"You are not allowed to edit this.",
)
self.assertTemplateUsed(response=None, template_name="trip/view_trips.html")

def test_cancel_matching_request(self):
self.client.login(
username="matching_user",
password=self.password,
)
_ = self.client.post(
reverse("matching:send_request", kwargs={"utrip_id": self.utrip1.id}),
{"receiver_uid": self.user2.id, "receiver_utrip_id": self.utrip2.id},
follow=True,
)
response = self.client.post(
reverse("matching:cancel_request", kwargs={"utrip_id": self.utrip1.id}),
{
"receiver_uid": self.user2.id,
"receiver_utrip_id": self.utrip2.id,
},
follow=True,
)
self.assertEqual(response.status_code, 200)
messages = list(get_messages(response.wsgi_request))
self.assertEqual(
messages[0].message, "Your matching request is cancelled successfully"
)

response = self.client.post(
reverse("matching:cancel_request", kwargs={"utrip_id": self.utrip1.id}),
{
"receiver_uid": self.user2.id,
"receiver_utrip_id": self.utrip2.id,
},
follow=True,
)
self.assertEqual(
list(get_messages(response.wsgi_request))[0].message,
"Your matching request has already been cancelled.",
)

_ = self.client.post(
reverse("matching:send_request", kwargs={"utrip_id": self.utrip1.id}),
{"receiver_uid": self.user2.id, "receiver_utrip_id": self.utrip2.id},
follow=True,
)
self.client.logout()
self.client.login(
username="matching_user2",
password=self.password,
)
_ = self.client.post(
reverse("matching:react_request", kwargs={"utrip_id": self.utrip2.id}),
{
"sender_utrip_id": self.utrip1.id,
"sender_id": self.user1.id,
"pending_request": "Rejected",
},
follow=True,
)
self.client.logout()
self.client.login(
username="matching_user",
password=self.password,
)
response = self.client.post(
reverse("matching:cancel_request", kwargs={"utrip_id": self.utrip1.id}),
{
"receiver_uid": self.user2.id,
"receiver_utrip_id": self.utrip2.id,
},
follow=True,
)
self.assertEqual(
list(get_messages(response.wsgi_request))[0].message,
"Your matching request might have already been responded, "
"and hence cannot cancel anymore, "
"please try to unmatch, if matched or "
"try sending the request again",
)

def test_show_pending_requests(self):
self.client.login(
username="matching_user",
password=self.password,
)
self.utrip1.is_active = False
self.utrip1.save()
response = self.client.get(
reverse(
"matching:show_pending_requests", kwargs={"utrip_id": self.utrip1.id}
),
follow=True,
)
self.assertEqual(
list(get_messages(response.wsgi_request))[0].message,
"The trip is not active anymore, cannot show pending request",
)
self.assertTemplateUsed(template_name="trip/view_trips.html")

def test_react_pending_request(self):
self.client.login(username="matching_user2", password=self.password)
_ = self.client.post(
reverse("matching:send_request", kwargs={"utrip_id": self.utrip2.id}),
{
"receiver_utrip_id": self.utrip1.id,
"receiver_uid": self.user1.id,
},
follow=True,
)
self.client.logout()
self.client.login(username="matching_user", password=self.password)
self.utrip1.is_active = False
self.utrip1.save()
response = self.client.post(
reverse("matching:react_request", kwargs={"utrip_id": self.utrip1.id}),
{
"sender_utrip_id": self.utrip2.id,
"sender_id": self.user2.id,
"pending_request": "Matched",
},
follow=True,
)
self.assertEqual(
list(get_messages(response.wsgi_request))[0].message,
"Cannot accept/reject you with other user, as your current trip is inactive.",
)
self.utrip1.is_active = True
self.utrip1.save()

self.utrip2.is_active = False
self.utrip2.save()
response = self.client.post(
reverse("matching:react_request", kwargs={"utrip_id": self.utrip1.id}),
{
"sender_utrip_id": self.utrip2.id,
"sender_id": self.user2.id,
"pending_request": "Matched",
},
follow=True,
)
self.assertEqual(
list(get_messages(response.wsgi_request))[0].message,
"The sender trip or the sender itself is not active anymore, "
"cannot accept/reject the request.",
)

def test_show_matches(self):
pass

def test_unmatch(self):
pass
4 changes: 0 additions & 4 deletions matching/utilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,11 @@ def get_knn_recommendations(data, curr_user):
user_index = data_encoded[
data_encoded["userprofile__user"] == curr_user
].index.values.astype(int)[0]
print("user_index:", user_index)
user_attributes = data_encoded.iloc[user_index]
# print(user_attributes)
recommendations, distances = get_recommendations(
knn, data_encoded, user_attributes, num_recommendations=3
)
recommendations = recommendations["userprofile__user"].tolist()
print("Recommended people:")
print(recommendations)
print(distances)

return recommendations
2 changes: 0 additions & 2 deletions trip/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ def end_date_after_start_date(std, end):


def city_present_in_country(city, country):
print("Here in helper!!!!!!")
print(city)
city = city[0].title()
country = country[0].title()
city_tuple = (city, city)
Expand Down

0 comments on commit 23b66cb

Please sign in to comment.