1
1
# Copyright 2013 Canonical Ltd. This software is licensed under the
2
2
# GNU Affero General Public License version 3 (see the file LICENSE).
4
from charmworld.jobs.ingest import (
4
from charmworld.jobs.ingest import IndexIngestJob
5
from charmworld.testing import factory
6
from charmworld.testing import (
8
from charmworld.testing import factory
9
from charmworld.testing import JobTestBase
12
12
class TestIndexer(object):
25
25
class IndexIngestTest(JobTestBase):
27
def test_charmers_weighted(self):
28
job = IndexIngestJob()
29
index_client = XappyClient(TestIndexer())
30
job.setup(index_client=index_client)
31
ignore, charmer_charm = factory.makeCharm(self.db, owner='charmers')
32
ignore, noncharmer_charm = factory.makeCharm(self.db, owner='foo')
33
job.run(charmer_charm)
34
job.run(noncharmer_charm)
35
charmer_doc, noncharmer_doc = index_client.indexer.collection
36
self.assertEqual(1, noncharmer_doc.fields[0].weight)
37
self.assertEqual(10, charmer_doc.fields[0].weight)
39
27
def test_basic_index(self):
40
28
job = IndexIngestJob()
41
index_client = XappyClient(TestIndexer())
42
job.setup(index_client=index_client)
43
ignore, charm = factory.makeCharm(self.db)
45
doc = index_client.indexer.collection[0]
46
fields = ['name', 'description', 'summary']
47
for field in [f for f in doc.fields if f.name in fields]:
48
self.assertEqual(field.value, charm[field.name])
29
with temp_index_client() as index_client:
30
job.setup(index_client=index_client)
31
ignore, charm = factory.makeCharm(self.db)
33
result = index_client._client.search(
34
{}, index=index_client.index_name)
35
doc = result['hits']['hits'][0]['_source']
36
fields = ['name', 'description', 'summary']
37
for field in [f for f in doc.keys() if f in fields]:
38
self.assertEqual(doc[field], charm[field])