2
# -*- coding: utf-8 -*-
3
from gi.repository import Unity
4
from unittest import TestCase
7
class ResultSet(Unity.ResultSet):
9
Unity.ResultSet.__init__(self)
12
def do_add_result(self, result):
13
self.results.append({'uri':result.uri,
15
'comment':result.comment,
16
'icon':result.icon_hint})
19
class ScopeTestCase(TestCase):
20
def init_scope(self, scope_path):
21
self.scope_module = imp.load_source('scope', scope_path)
22
self.scope = self.scope_module.load_scope()
24
def perform_query(self, query, filter_set = Unity.FilterSet.new()):
25
result_set = ResultSet()
26
ctx = Unity.SearchContext.create(query, 0, filter_set,
27
None, result_set, None)
28
s = self.scope.create_search_for_query(ctx)
33
class TestSoundcloud(ScopeTestCase):
35
self.init_scope('src/unity_soundcloud_daemon.py')
39
self.scope_module = None
41
def test_valid_searches(self):
42
self.scope_module.SEARCH_URI = 'file:tests/data/mock_soundcloud_pass#'
43
expected_results = ['http://soundcloud.com/vibecatt/echos', 'Echos',
44
'http://soundcloud.com/vibecatt/ganymede', 'Ganymede']
46
for s in ['submarine']:
47
result_set = self.perform_query(s)
48
results.append(result_set.results[0]['uri'])
49
results.append(result_set.results[0]['title'])
50
results.append(result_set.results[1]['uri'])
51
results.append(result_set.results[1]['title'])
53
self.assertEqual(results, expected_results)
55
def test_failing_search(self):
56
self.scope_module.SEARCH_URI = 'file:tests/data/mock_soundcloud_fail#'
57
for s in ['submarine']:
58
result_set = self.perform_query(s)
59
self.assertEqual(len(result_set.results), 0)
62
if __name__ == '__main__':