|
| 1 | +import swiftype |
| 2 | +import os |
| 3 | +import time |
| 4 | +import unittest |
| 5 | + |
| 6 | +class TestClientFunctions(unittest.TestCase): |
| 7 | + def setUp(self): |
| 8 | + try: |
| 9 | + api_key = os.environ['API_KEY'] |
| 10 | + except: |
| 11 | + api_key = "DUMMY_KEY" |
| 12 | + |
| 13 | + self.client = swiftype.Client(api_key=api_key, host=os.environ['API_HOST']) |
| 14 | + self.engine = 'engine' |
| 15 | + self.document_type = 'doctype' |
| 16 | + |
| 17 | + def test_engines(self): |
| 18 | + self.__is_expected_collection(self.client.engines, 200, 10, {'id': '1'}) |
| 19 | + |
| 20 | + def test_engine(self): |
| 21 | + slug = self.client.engine(self.engine)['body']['slug'] |
| 22 | + self.assertEquals(slug, self.engine) |
| 23 | + |
| 24 | + def test_engine_create(self): |
| 25 | + slug = self.client.create_engine(self.engine)['body']['slug'] |
| 26 | + self.assertEqual(slug, self.engine) |
| 27 | + |
| 28 | + def test_engine_delete(self): |
| 29 | + response = self.client.destroy_engine(self.engine) |
| 30 | + self.assertEqual(response['status'], 204) |
| 31 | + |
| 32 | + def test_document_types(self): |
| 33 | + self.__is_expected_collection(self.client.document_types, 200, 3, {'slug': 'doctype1'}, self.engine) |
| 34 | + |
| 35 | + def test_document_type(self): |
| 36 | + self.__is_expected_result(self.client.document_type, 200, {'slug': self.document_type}, self.engine, self.document_type) |
| 37 | + |
| 38 | + def test_create_document_type(self): |
| 39 | + slug = self.client.create_document_type(self.engine, self.document_type)['body']['slug'] |
| 40 | + self.assertEqual(slug, self.document_type) |
| 41 | + |
| 42 | + def test_destroy_document_type(self): |
| 43 | + response = self.client.destroy_document_type(self.engine, self.document_type) |
| 44 | + self.assertEqual(response['status'], 204) |
| 45 | + |
| 46 | + def test_documents(self): |
| 47 | + self.__is_expected_collection(self.client.documents, 200, 25, {'external_id': '1'}, self.engine, self.document_type) |
| 48 | + |
| 49 | + def test_document(self): |
| 50 | + external_id = '1' |
| 51 | + id = self.client.document(self.engine, self.document_type, external_id)['body']['external_id'] |
| 52 | + self.assertEqual(id, external_id) |
| 53 | + |
| 54 | + def test_create_document(self): |
| 55 | + doc_id = 'doc_id' |
| 56 | + id = self.client.create_document(self.engine, self.document_type, {'external_id': doc_id})['body']['external_id'] |
| 57 | + self.assertEqual(id, doc_id) |
| 58 | + |
| 59 | + def test_create_documents(self): |
| 60 | + docs = [{'external_id': 'doc_id1'}, {'external_id': 'doc_id2'}] |
| 61 | + stati = self.client.create_documents(self.engine, self.document_type, docs)['body'] |
| 62 | + self.assertEqual(stati, [True, True]) |
| 63 | + |
| 64 | + def test_create_or_update_document(self): |
| 65 | + id = '1' |
| 66 | + external_id = self.client.create_or_update_document(self.engine, self.document_type, {'external_id': id, 'fields': {}})['body']['external_id'] |
| 67 | + self.assertEqual(external_id, id) |
| 68 | + |
| 69 | + def test_create_or_update_documents(self): |
| 70 | + docs = [{'external_id': '1'}, {'external_id': '2'}] |
| 71 | + stati = self.client.create_or_update_documents(self.engine, self.document_type, docs)['body'] |
| 72 | + self.assertEqual(stati, [True, True]) |
| 73 | + |
| 74 | + def test_update_document(self): |
| 75 | + document_id = '1' |
| 76 | + id = self.client.update_document(self.engine, self.document_type, document_id, {'title': 'title'})['body']['id'] |
| 77 | + self.assertEqual(id, document_id) |
| 78 | + |
| 79 | + def test_update_documents(self): |
| 80 | + documents = [{'external_id': '1'}, {'external_id': '2'}] |
| 81 | + stati = self.client.update_documents(self.engine, self.document_type, documents)['body'] |
| 82 | + self.assertEqual(stati, [True, True]) |
| 83 | + |
| 84 | + def test_destroy_document(self): |
| 85 | + response = self.client.destroy_document(self.engine, self.document_type, 'id') |
| 86 | + self.assertEqual(response['status'], 204) |
| 87 | + |
| 88 | + def test_destroy_documents(self): |
| 89 | + documents = ['1', '2'] |
| 90 | + stati = self.client.destroy_documents(self.engine, self.document_type, documents)['body'] |
| 91 | + self.assertEqual(stati, [True, True]) |
| 92 | + |
| 93 | + def test_search(self): |
| 94 | + total_count = len(self.client.document_types(self.engine)['body']) |
| 95 | + self.assertTrue(total_count > 1) |
| 96 | + self.__is_expected_search_result(self.client.search, total_count) |
| 97 | + |
| 98 | + def test_search_document_type(self): |
| 99 | + self.__is_expected_search_result(self.client.search_document_type, 1, [self.document_type]) |
| 100 | + |
| 101 | + def test_suggest(self): |
| 102 | + total_count = len(self.client.document_types(self.engine)['body']) |
| 103 | + self.assertTrue(total_count > 1) |
| 104 | + self.__is_expected_search_result(self.client.suggest, total_count) |
| 105 | + |
| 106 | + def test_suggest_document_type(self): |
| 107 | + self.__is_expected_search_result(self.client.suggest_document_type, 1, [self.document_type]) |
| 108 | + |
| 109 | + def test_analytics_searches(self): |
| 110 | + searches = self.client.analytics_searches(self.engine)['body'] |
| 111 | + self.assertTrue(len(searches) == 1) |
| 112 | + |
| 113 | + def test_analytics_autoselects(self): |
| 114 | + autoselects = self.client.analytics_autoselects(self.engine)['body'] |
| 115 | + self.assertTrue(len(autoselects) == 1) |
| 116 | + |
| 117 | + def test_analytics_top_queries(self): |
| 118 | + top_queries = self.client.analytics_top_queries(self.engine)['body'] |
| 119 | + self.assertTrue(len(top_queries) == 2) |
| 120 | + |
| 121 | + def test_domains(self): |
| 122 | + domains = self.client.domains(self.engine)['body'] |
| 123 | + self.assertTrue(len(domains) == 2) |
| 124 | + |
| 125 | + def test_domain(self): |
| 126 | + domain_id = 'domain_id' |
| 127 | + domain = self.client.domain(self.engine, domain_id)['body'] |
| 128 | + self.assertEqual(domain['id'], domain_id) |
| 129 | + |
| 130 | + def test_destroy_domain(self): |
| 131 | + status = self.client.destroy_domain(self.engine, 'domain_id')['status'] |
| 132 | + self.assertEqual(status, 204) |
| 133 | + |
| 134 | + def test_recrawl_domain(self): |
| 135 | + domain_id = 'domain_id' |
| 136 | + domain = self.client.recrawl_domain(self.engine, domain_id)['body'] |
| 137 | + self.assertEqual(domain['id'], domain_id) |
| 138 | + |
| 139 | + def test_crawl_url(self): |
| 140 | + domain_id = 'domain_id' |
| 141 | + url = 'http://www.example.com' |
| 142 | + crawled_url = self.client.crawl_url(self.engine, domain_id, url)['body']['url'] |
| 143 | + self.assertEqual(crawled_url, url) |
| 144 | + |
| 145 | + def test_create_domain(self): |
| 146 | + url = 'http://www.example.com' |
| 147 | + domain_url = self.client.create_domain(self.engine, url)['body']['submitted_url'] |
| 148 | + self.assertEqual(domain_url, url) |
| 149 | + |
| 150 | + def __is_expected_search_result(self, request, document_type_count, args=[]): |
| 151 | + response = request(self.engine, *(args + ['*'])) |
| 152 | + self.assertEqual(len(response['body']['records']), document_type_count) |
| 153 | + |
| 154 | + def __is_expected_result(self, request, status_code, expected_values, *args): |
| 155 | + response = request(*args) |
| 156 | + self.assertEqual(response['status'], status_code) |
| 157 | + for k,v in expected_values.iteritems(): |
| 158 | + self.assertEqual(response['body'][k], v) |
| 159 | + |
| 160 | + def __is_expected_collection(self, request, status_code, min_body_length, expected_values, *args): |
| 161 | + response = request(*args) |
| 162 | + self.assertEqual(response['status'], status_code) |
| 163 | + self.assertTrue(len(response['body']), min_body_length) |
| 164 | + for k,v in expected_values.iteritems(): |
| 165 | + self.assertEqual(len([item for item in response['body'] if item[k] == v]), 1) |
| 166 | + |
| 167 | + def __time_name(self): |
| 168 | + return str(int(time.mktime(time.gmtime()))) |
| 169 | + |
| 170 | + def __create_temporary_engine(self, name = None): |
| 171 | + name = name if name else self.__time_name() |
| 172 | + return |
| 173 | + |
| 174 | +if __name__ == '__main__': |
| 175 | + unittest.main() |
0 commit comments