def add_ledger(self, case_id, **values): ref = UniqueLedgerReference(case_id, "stock", case_id) self.sql_ledgers[case_id] = Config( ledger_reference=ref, values=values, to_json=lambda: dict(values, ledger_reference=ref.as_id()), ) couch_values = dict(values) stock = Config( ledger_reference=ref, values=couch_values, to_json=lambda: dict(couch_values, ledger_reference=ref.as_id()), ) self.couch_ledgers[case_id] = stock return stock
def test_ledger_pillow(self): factory = CaseFactory(domain=self.domain) case = factory.create_case() consumer = get_test_kafka_consumer(topics.LEDGER) # have to get the seq id before the change is processed kafka_seq = get_topic_offset(topics.LEDGER) from corehq.apps.commtrack.tests.util import get_single_balance_block from corehq.apps.hqcase.utils import submit_case_blocks submit_case_blocks([ get_single_balance_block(case.case_id, self.product_id, 100)], self.domain ) ref = UniqueLedgerReference(case.case_id, 'stock', self.product_id) # confirm change made it to kafka message = consumer.next() change_meta = change_meta_from_kafka_message(message.value) if should_use_sql_backend(self.domain): self.assertEqual(ref.as_id(), change_meta.document_id) else: from corehq.apps.commtrack.models import StockState state = StockState.objects.all() self.assertEqual(1, len(state)) self.assertEqual(state[0].pk, change_meta.document_id) # self.assertEqual(self.domain, change_meta.domain) # send to elasticsearch self.pillow.process_changes(since=kafka_seq, forever=False) self.elasticsearch.indices.refresh(LEDGER_INDEX_INFO.index) # confirm change made it to elasticserach self._assert_ledger_in_es(ref)
def test_ledger_pillow_sql(self): factory = CaseFactory(domain=self.domain) case = factory.create_case() consumer = get_test_kafka_consumer(topics.LEDGER) # have to get the seq id before the change is processed kafka_seq = consumer.offsets()['fetch'][(topics.LEDGER, 0)] from corehq.apps.commtrack.tests import get_single_balance_block from corehq.apps.hqcase.utils import submit_case_blocks submit_case_blocks([ get_single_balance_block(case.case_id, self.product_id, 100)], self.domain ) ref = UniqueLedgerReference(case.case_id, 'stock', self.product_id) # confirm change made it to kafka message = consumer.next() change_meta = change_meta_from_kafka_message(message.value) if should_use_sql_backend(self.domain): self.assertEqual(ref.as_id(), change_meta.document_id) else: from corehq.apps.commtrack.models import StockState state = StockState.objects.all() self.assertEqual(1, len(state)) self.assertEqual(state[0].pk, change_meta.document_id) # self.assertEqual(self.domain, change_meta.domain) # send to elasticsearch self.pillow.process_changes(since=kafka_seq, forever=False) self.elasticsearch.indices.refresh(LEDGER_INDEX_INFO.index) # confirm change made it to elasticserach results = self.elasticsearch.search( LEDGER_INDEX_INFO.index, LEDGER_INDEX_INFO.type, body={ "query": { "bool": { "must": [{ "match_all": {} }] } } } ) self.assertEqual(1, results['hits']['total']) ledger_doc = results['hits']['hits'][0]['_source'] self.assertEqual(self.domain, ledger_doc['domain']) self.assertEqual(ref.case_id, ledger_doc['case_id']) self.assertEqual(ref.section_id, ledger_doc['section_id']) self.assertEqual(ref.entry_id, ledger_doc['entry_id'])
def add_ledger(self, case_id, **values): ref = UniqueLedgerReference(case_id, "stock", case_id) self.sql_ledgers[case_id] = Config( ledger_reference=ref, values=values, last_modified_form_id="form", to_json=lambda: dict(values, ledger_reference=ref.as_id()), ) couch_values = dict(values) stock = Config( ledger_reference=ref, values=couch_values, last_modified_form_id="form", to_json=lambda: dict(couch_values, ledger_reference=ref.as_id()), ) self.couch_ledgers[case_id] = stock tx = Config( report=Config(form_id="form", type="transfer"), ledger_reference=ref, ) tx_helper = Config(ledger_reference=ref) self.stock_transactions[ref] = [tx] self.form_transactions["form"] = [("transfer", tx_helper)] return stock