Skip to content

Commit

Permalink
Merge pull request #1022 from sickelap/tests_for_search_terms
Browse files Browse the repository at this point in the history
tests for search terms
  • Loading branch information
derneuere committed Sep 18, 2023
2 parents 8a4ba7a + 78b0464 commit 238bf87
Show file tree
Hide file tree
Showing 4 changed files with 136 additions and 7 deletions.
2 changes: 1 addition & 1 deletion api/api_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ def get_search_term_examples(user):
if random.random() > 0.9:
search_terms.append(search_term_time_thing)

return list(set(search_terms))
return list(filter(lambda x: len(x), set([x.strip() for x in search_terms])))


def median_value(queryset, term):
Expand Down
17 changes: 17 additions & 0 deletions api/tests/fixtures/api_util/captions_json.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
captions_json = {
"places365": {
"attributes": [
"no horizon",
"man made",
"enclosed area",
"cloth",
"natural light",
"wood",
"glass",
"indoor lighting",
"dry",
],
"categories": ["phone booth", "ticket booth"],
"environment": "indoor",
}
}
101 changes: 96 additions & 5 deletions api/tests/test_search_terms.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,104 @@
import random

from django.test import TestCase

from api.api_util import get_search_term_examples
from api.models import User
from api.models import Photo
from api.tests.fixtures.api_util.captions_json import captions_json
from api.tests.fixtures.geocode.expectations.mapbox import expectations
from api.tests.utils import (
create_test_photos,
create_test_photos_with_faces,
create_test_user,
)


class GetSearchTermExamples(TestCase):
def test_get_search_term_examples(self):
admin = User.objects.create_superuser(
"test_admin", "[email protected]", "test_password"
def setUp(self) -> None:
self.admin = create_test_user(is_admin=True)
self.photos = (
create_test_photos(
90,
owner=self.admin,
geolocation_json=expectations[0],
captions_json=captions_json,
exif_timestamp="2017-08-18 15:08:09.000000 +00:00",
)
+ create_test_photos(
5,
owner=self.admin,
geolocation_json={},
captions_json={"places365": None},
)
+ create_test_photos_with_faces(
5,
owner=self.admin,
geolocation_json=expectations[0],
captions_json={"places365": None},
)
)
self._original__random_random = random.random
self._original__random_choices = random.choices
self._original__random_choice = random.choice
self._original__random_shuffle = random.shuffle
random.choices = lambda x, **kw: x
random.choice = lambda x: x[0]
random.shuffle = lambda x: x

def tearDown(self) -> None:
random.random = self._original__random_random
random.choices = self._original__random_choices
random.choice = self._original__random_choice
random.shuffle = self._original__random_shuffle

def test_get_search_term_examples_0(self):
random.random = lambda: 0
array = get_search_term_examples(self.admin)
self.assertEqual(len(array), 3)
self.assertEqual(set(array), {"phone booth", "2017", "Beach Road"})

def test_get_search_term_examples_2(self):
random.random = lambda: 0.5
array = get_search_term_examples(self.admin)
self.assertEqual(len(array), 4)
self.assertEqual(
set(array),
{
"2017",
"Beach Road 2017",
"Beach Road",
"phone booth",
},
)
array = get_search_term_examples(admin)

def test_get_search_term_examples_3(self):
random.random = lambda: 1
array = get_search_term_examples(self.admin)
self.assertEqual(len(array), 7)
self.assertEqual(
set(array),
{
"2017 phone booth",
"2017",
"Beach Road 2017 phone booth",
"Beach Road 2017",
"Beach Road phone booth",
"Beach Road",
"phone booth",
},
)

def test_get_search_term_examples_without_photos(self):
Photo.objects.all().delete()
array = get_search_term_examples(self.admin)
self.assertEqual(len(array), 5)
self.assertEqual(
set(array),
{
"for time",
"for places",
"for people",
"for file path or file name",
"for things",
},
)
23 changes: 22 additions & 1 deletion api/tests/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from django.utils import timezone
from faker import Faker

from api.models import File, Photo, User
from api.models import Face, File, Person, Photo, User

fake = Faker()

Expand Down Expand Up @@ -59,6 +59,27 @@ def create_test_photos(number_of_photos=1, **kwargs):
return [create_test_photo(**kwargs) for _ in range(0, number_of_photos)]


def create_test_face(**kwargs):
person = Person()
person.save()
face = Face(
person=person,
location_left=0,
location_right=1,
location_top=0,
location_bottom=1,
**kwargs,
)
face.save()
return face


def create_test_photos_with_faces(number_of_photos=1, **kwargs):
photos = create_test_photos(number_of_photos, **kwargs)
[create_test_face(photo=photo) for photo in photos]
return photos


def create_test_file(path: str, user: User, content: bytes):
with open(path, "wb+") as f:
f.write(content)
Expand Down

0 comments on commit 238bf87

Please sign in to comment.