File: test_match_data.py

package info (click to toggle)
python-lunr 0.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,644 kB
  • sloc: python: 3,811; javascript: 114; makefile: 60
file content (58 lines) | stat: -rw-r--r-- 2,220 bytes parent folder | download | duplicates (2)
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
47
48
49
50
51
52
53
54
55
56
57
58
from lunr.match_data import MatchData


class TestMatchData:
    def setup_method(self, method):
        self.match = MatchData("foo", "title", {"position": [1]})
        self.match.combine(MatchData("bar", "title", {"position": [2]}))
        self.match.combine(MatchData("baz", "body", {"position": [3]}))
        self.match.combine(MatchData("baz", "body", {"position": [4]}))

    def test_repr(self):
        assert repr(self.match) == '<MatchData "bar,baz,foo">'

    def test_create_empty_match_data(self):
        assert MatchData().metadata == {}

    def test_create_missing_field(self):
        assert MatchData("foo").metadata["foo"] == {}

    def test_create_missing_metadata(self):
        assert MatchData("foo", "title").metadata["foo"]["title"] == {}

    def test_combine_terms(self):
        assert sorted(list(self.match.metadata.keys())) == ["bar", "baz", "foo"]

    def test_combine_metadata(self):
        assert self.match.metadata["foo"]["title"]["position"] == [1]
        assert self.match.metadata["bar"]["title"]["position"] == [2]
        assert self.match.metadata["baz"]["body"]["position"] == [3, 4]

    def test_combine_does_not_mutate_source_data(self):
        metadata = {"foo": [1]}
        match_data1 = MatchData("foo", "title", metadata)
        match_data2 = MatchData("foo", "title", metadata)

        match_data1.combine(match_data2)

        assert metadata["foo"] == [1]

    def test_add_metadata_for_missing_term(self):
        self.match.add("spam", "title", {"position": [5]})

        assert self.match.metadata["spam"]["title"]["position"] == [5]

    def test_add_metadata_for_missing_field(self):
        self.match.add("foo", "body", {"position": [6]})

        assert self.match.metadata["foo"]["body"]["position"] == [6]

    def test_add_metadata_for_existing_term_field_and_metadata_key(self):
        self.match.add("foo", "title", {"position": [7]})

        assert self.match.metadata["foo"]["title"]["position"] == [1, 7]

    def test_add_metadata_for_existing_term_and_field_and_missing_metadata_key(self):
        self.match.add("foo", "title", {"weight": [7]})

        assert self.match.metadata["foo"]["title"] == {"position": [1], "weight": [7]}