コード例 #1
0
ファイル: test_case_based.py プロジェクト: feibl/search-rex
def test__in_mem_dm__get_hit_rows_for_queries():
    query_rome = 'rome'
    query_caesar = 'caesar'

    record_brutus = 'brutus'
    record_caesar = 'caesar'

    hits = {
        query_rome: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
            record_brutus: Hit(2.0, datetime(1999, 1, 1)),
        },
        query_caesar: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
        }
    }
    fake_model = AbstractQueryDataModel()
    fake_model.get_hit_rows = mock.Mock(return_value=hits.iteritems())

    sut = InMemoryQueryDataModel(fake_model)

    ret_hits = list(sut.get_hit_rows_for_queries([query_rome]))
    assert len(ret_hits) == 1

    query, q_hits = ret_hits[0]

    assert query == query_rome

    for record, hit in q_hits.iteritems():
        assert hits[query_rome][record] == hit
コード例 #2
0
ファイル: test_case_based.py プロジェクト: feibl/search-rex
def test__in_mem_dm__get_hit_rows_for_queries__unknown_query():
    query_rome = 'rome'
    query_caesar = 'caesar'

    query_unknown = 'unknown'

    record_brutus = 'brutus'
    record_caesar = 'caesar'

    hits = {
        query_rome: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
            record_brutus: Hit(2.0, datetime(1999, 1, 1)),
        },
        query_caesar: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
        }
    }
    fake_model = AbstractQueryDataModel()
    fake_model.get_hit_rows = mock.Mock(return_value=hits.iteritems())

    sut = InMemoryQueryDataModel(fake_model)

    ret_hits = list(sut.get_hit_rows_for_queries([query_unknown]))
    assert len(ret_hits) == 0
コード例 #3
0
ファイル: test_case_based.py プロジェクト: feibl/search-rex
def test__in_mem_dm__get_hit_rows_for_queries__unknown_query():
    query_rome = 'rome'
    query_caesar = 'caesar'

    query_unknown = 'unknown'

    record_brutus = 'brutus'
    record_caesar = 'caesar'

    hits = {
        query_rome: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
            record_brutus: Hit(2.0, datetime(1999, 1, 1)),
        },
        query_caesar: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
        }
    }
    fake_model = AbstractQueryDataModel()
    fake_model.get_hit_rows = mock.Mock(
        return_value=hits.iteritems())

    sut = InMemoryQueryDataModel(fake_model)

    ret_hits = list(sut.get_hit_rows_for_queries([query_unknown]))
    assert len(ret_hits) == 0
コード例 #4
0
ファイル: test_case_based.py プロジェクト: feibl/search-rex
def test__in_mem_dm__get_hit_rows_for_queries():
    query_rome = 'rome'
    query_caesar = 'caesar'

    record_brutus = 'brutus'
    record_caesar = 'caesar'

    hits = {
        query_rome: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
            record_brutus: Hit(2.0, datetime(1999, 1, 1)),
        },
        query_caesar: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
        }
    }
    fake_model = AbstractQueryDataModel()
    fake_model.get_hit_rows = mock.Mock(
        return_value=hits.iteritems())

    sut = InMemoryQueryDataModel(fake_model)

    ret_hits = list(sut.get_hit_rows_for_queries([query_rome]))
    assert len(ret_hits) == 1

    query, q_hits = ret_hits[0]

    assert query == query_rome

    for record, hit in q_hits.iteritems():
        assert hits[query_rome][record] == hit
コード例 #5
0
ファイル: test_case_based.py プロジェクト: feibl/search-rex
def test__in_mem_dm__get_hit_rows():
    query_rome = 'rome'
    query_caesar = 'caesar'

    record_brutus = 'brutus'
    record_caesar = 'caesar'

    hits = {
        query_rome: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
            record_brutus: Hit(2.0, datetime(1999, 1, 1)),
        },
        query_caesar: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
        }
    }
    fake_model = AbstractQueryDataModel()
    fake_model.get_hit_rows = mock.Mock(
        return_value=hits.iteritems())

    sut = InMemoryQueryDataModel(fake_model)

    for query, q_hits in sut.get_hit_rows():
        for record, hit in q_hits.iteritems():
            assert hits[query][record] == hit
コード例 #6
0
ファイル: test_case_based.py プロジェクト: feibl/search-rex
def test__in_mem_dm__refresh__underlying_data_model_is_refreshed():
    hits = {}
    fake_model = AbstractQueryDataModel()
    fake_model.get_hit_rows = mock.Mock(return_value=hits.iteritems())
    fake_model.refresh = mock.Mock()

    sut = InMemoryQueryDataModel(fake_model)

    refreshed_components = set()
    sut.refresh(refreshed_components)

    fake_model.refresh.assert_called_once_with(refreshed_components)
    assert fake_model in refreshed_components
    assert sut in refreshed_components
コード例 #7
0
ファイル: test_case_based.py プロジェクト: feibl/search-rex
def test__in_mem_dm__refresh__underlying_data_model_is_refreshed():
    hits = {
    }
    fake_model = AbstractQueryDataModel()
    fake_model.get_hit_rows = mock.Mock(
        return_value=hits.iteritems())
    fake_model.refresh = mock.Mock()

    sut = InMemoryQueryDataModel(fake_model)

    refreshed_components = set()
    sut.refresh(refreshed_components)

    fake_model.refresh.assert_called_once_with(refreshed_components)
    assert fake_model in refreshed_components
    assert sut in refreshed_components
コード例 #8
0
ファイル: test_case_based.py プロジェクト: feibl/search-rex
def test__in_mem_dm__refresh__data_is_reloaded():
    query_rome = 'rome'
    record_caesar = 'caesar'

    hits = {}
    fake_model = AbstractQueryDataModel()
    fake_model.get_hit_rows = mock.Mock(return_value=hits.iteritems())
    fake_model.refresh = mock.Mock()

    sut = InMemoryQueryDataModel(fake_model)

    assert {k: v for k, v in sut.get_hit_rows()} == {}

    hits[query_rome] = {
        record_caesar: Hit(1.0, datetime(1999, 1, 1)),
    }

    sut.refresh(set())

    for record_id, rec_prefs in sut.get_hit_rows():
        for session_id, pref in rec_prefs.iteritems():
            assert hits[record_id][session_id] == pref
コード例 #9
0
ファイル: test_case_based.py プロジェクト: feibl/search-rex
def test__in_mem_dm__get_queries():
    query_rome = 'rome'
    query_caesar = 'caesar'

    record_brutus = 'brutus'
    record_caesar = 'caesar'

    hits = {
        query_rome: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
            record_brutus: Hit(2.0, datetime(1999, 1, 1)),
        },
        query_caesar: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
        }
    }
    fake_model = AbstractQueryDataModel()
    fake_model.get_hit_rows = mock.Mock(return_value=hits.iteritems())

    sut = InMemoryQueryDataModel(fake_model)

    ret_queries = list(sut.get_queries())
    assert sorted(hits.keys()) == sorted(ret_queries)
コード例 #10
0
ファイル: test_case_based.py プロジェクト: feibl/search-rex
def test__in_mem_dm__refresh__data_is_reloaded():
    query_rome = 'rome'
    record_caesar = 'caesar'

    hits = {}
    fake_model = AbstractQueryDataModel()
    fake_model.get_hit_rows = mock.Mock(
        return_value=hits.iteritems())
    fake_model.refresh = mock.Mock()

    sut = InMemoryQueryDataModel(fake_model)

    assert {k: v for k, v in sut.get_hit_rows()} == {}

    hits[query_rome] = {
        record_caesar: Hit(1.0, datetime(1999, 1, 1)),
    }

    sut.refresh(set())

    for record_id, rec_prefs in sut.get_hit_rows():
        for session_id, pref in rec_prefs.iteritems():
            assert hits[record_id][session_id] == pref
コード例 #11
0
ファイル: test_case_based.py プロジェクト: feibl/search-rex
def test__in_mem_dm__get_hit_rows():
    query_rome = 'rome'
    query_caesar = 'caesar'

    record_brutus = 'brutus'
    record_caesar = 'caesar'

    hits = {
        query_rome: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
            record_brutus: Hit(2.0, datetime(1999, 1, 1)),
        },
        query_caesar: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
        }
    }
    fake_model = AbstractQueryDataModel()
    fake_model.get_hit_rows = mock.Mock(return_value=hits.iteritems())

    sut = InMemoryQueryDataModel(fake_model)

    for query, q_hits in sut.get_hit_rows():
        for record, hit in q_hits.iteritems():
            assert hits[query][record] == hit
コード例 #12
0
ファイル: test_case_based.py プロジェクト: feibl/search-rex
def test__in_mem_dm__get_queries():
    query_rome = 'rome'
    query_caesar = 'caesar'

    record_brutus = 'brutus'
    record_caesar = 'caesar'

    hits = {
        query_rome: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
            record_brutus: Hit(2.0, datetime(1999, 1, 1)),
        },
        query_caesar: {
            record_caesar: Hit(1.0, datetime(1999, 1, 1)),
        }
    }
    fake_model = AbstractQueryDataModel()
    fake_model.get_hit_rows = mock.Mock(
        return_value=hits.iteritems())

    sut = InMemoryQueryDataModel(fake_model)

    ret_queries = list(sut.get_queries())
    assert sorted(hits.keys()) == sorted(ret_queries)