File size: 1,362 Bytes
86e971c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import inspect
import os
import sys

parentdir = os.path.dirname(  # make it possible to import from ../ in a reliable way
    os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
)
sys.path.insert(0, parentdir)

from models import fake
from models.request import RankingRequest


def test_fake_request():
    # this test's purpose is mostly to run the code to make sure it doesn't
    # have any validation errors. pydantic will make sure it has the right fields.
    request = fake.fake_request(n_posts=5)
    assert len(request.items) == 5

    # all ids are unique
    assert len(set(item.id for item in request.items)) == 5

    request = fake.fake_request(n_posts=5, n_comments=2, platform="twitter")
    assert len(request.items) == 15
    assert request.session.platform == "twitter"


def test_fake_response():
    ids = [str(i) for i in range(5)]

    response = fake.fake_response(ids, 2)
    assert len(response.ranked_ids) == 7

    # all ids are unique
    assert len(set(id for id in response.ranked_ids)) == 7


def test_load_fake_data():
    # This really just exercises pydantic, and is mostly an example
    # of how to load json data
    request = fake.fake_request(5)
    json_data = request.model_dump_json()

    loaded_request = RankingRequest.model_validate_json(json_data)
    assert len(loaded_request.items) == 5