diff options
| author | rr- | 2016-06-03 13:50:38 +0200 |
|---|---|---|
| committer | rr- | 2016-06-03 19:47:09 +0200 |
| commit | f0d3589344345f41ebf5593231287a923be45dbb (patch) | |
| tree | 289e155e54abf963bf1c952da386b23b846925d3 /server/szurubooru/tests/search/test_executor.py | |
| parent | 59ad5fe40222a5b5402d5e31ec2a6c59f2f1b4bc (diff) | |
server/search: cache by query rather than its text
Diffstat (limited to 'server/szurubooru/tests/search/test_executor.py')
| -rw-r--r-- | server/szurubooru/tests/search/test_executor.py | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/server/szurubooru/tests/search/test_executor.py b/server/szurubooru/tests/search/test_executor.py new file mode 100644 index 0000000..bb1cb51 --- /dev/null +++ b/server/szurubooru/tests/search/test_executor.py @@ -0,0 +1,84 @@ +import unittest.mock +from szurubooru import search +from szurubooru.func import cache + +def test_retrieving_from_cache(user_factory): + config = unittest.mock.MagicMock() + with unittest.mock.patch('szurubooru.func.cache.has'), \ + unittest.mock.patch('szurubooru.func.cache.get'): + cache.has.side_effect = lambda *args: True + executor = search.Executor(config) + executor.execute('test:whatever', 1, 10) + assert cache.get.called + +def test_putting_equivalent_queries_into_cache(user_factory): + config = search.configs.PostSearchConfig() + with unittest.mock.patch('szurubooru.func.cache.has'), \ + unittest.mock.patch('szurubooru.func.cache.put'): + hashes = [] + def appender(key, value): + hashes.append(key) + cache.has.side_effect = lambda *args: False + cache.put.side_effect = appender + executor = search.Executor(config) + executor.execute('safety:safe test', 1, 10) + executor.execute('safety:safe test', 1, 10) + executor.execute('safety:safe test ', 1, 10) + executor.execute(' safety:safe test', 1, 10) + executor.execute(' SAFETY:safe test', 1, 10) + executor.execute('test safety:safe', 1, 10) + assert len(hashes) == 6 + assert len(set(hashes)) == 1 + +def test_putting_non_equivalent_queries_into_cache(user_factory): + config = search.configs.PostSearchConfig() + with unittest.mock.patch('szurubooru.func.cache.has'), \ + unittest.mock.patch('szurubooru.func.cache.put'): + hashes = [] + def appender(key, value): + hashes.append(key) + cache.has.side_effect = lambda *args: False + cache.put.side_effect = appender + executor = search.Executor(config) + args = [ + ('', 1, 10), + ('creation-time:2016', 1, 10), + ('creation-time:2015', 1, 10), + ('creation-time:2016-01', 1, 10), + ('creation-time:2016-02', 1, 10), + ('creation-time:2016-01-01', 1, 10), + ('creation-time:2016-01-02', 1, 10), + ('tag-count:1,3', 1, 10), + ('tag-count:1,2', 1, 10), + ('tag-count:1', 1, 10), + ('tag-count:1..3', 1, 10), + ('tag-count:1..4', 1, 10), + ('tag-count:2..3', 1, 10), + ('tag-count:1..', 1, 10), + ('tag-count:2..', 1, 10), + ('tag-count:..3', 1, 10), + ('tag-count:..4', 1, 10), + ('-tag-count:1..3', 1, 10), + ('-tag-count:1..4', 1, 10), + ('-tag-count:2..3', 1, 10), + ('-tag-count:1..', 1, 10), + ('-tag-count:2..', 1, 10), + ('-tag-count:..3', 1, 10), + ('-tag-count:..4', 1, 10), + ('safety:safe', 1, 10), + ('safety:safe', 1, 20), + ('safety:safe', 2, 10), + ('safety:sketchy', 1, 10), + ('safety:safe test', 1, 10), + ('-safety:safe', 1, 10), + ('-safety:safe', 1, 20), + ('-safety:safe', 2, 10), + ('-safety:sketchy', 1, 10), + ('-safety:safe test', 1, 10), + ('safety:safe -test', 1, 10), + ('-test', 1, 10), + ] + for arg in args: + executor.execute(*arg) + assert len(hashes) == len(args) + assert len(set(hashes)) == len(args) |