Beispiel #1
0
class StockTestBase(TestCase):
    @classmethod
    def setUpClass(cls):
        super(StockTestBase, cls).setUpClass()
        cls.domain = create_domain("stock-report-test")

    @classmethod
    def tearDownClass(cls):
        cls.domain.delete()
        super(StockTestBase, cls).tearDownClass()

    def setUp(self):
        # create case
        case = CaseFactory(domain=self.domain.name).create_case()
        self.case_id = case.case_id

        self.product_id = uuid.uuid4().hex
        SQLProduct(product_id=self.product_id, domain=self.domain.name).save()
        self._stock_report = functools.partial(_stock_report, self.domain.name,
                                               self.case_id, self.product_id)
        self._receipt_report = functools.partial(_receipt_report,
                                                 self.domain.name,
                                                 self.case_id, self.product_id)
        self._test_config = ConsumptionConfiguration.test_config()
        self._compute_consumption = functools.partial(
            compute_daily_consumption,
            self.domain.name,
            self.case_id,
            self.product_id,
            now,
            configuration=self._test_config)
    def _test_subtype(self, initial, final):
        case_id = uuid.uuid4().hex
        CommCareCase(
            _id=case_id,
            domain='fakedomain',
        ).save()

        product_id = uuid.uuid4().hex
        SQLProduct(product_id=product_id, domain='fakedomain').save()
        report = StockReport.objects.create(form_id=uuid.uuid4().hex,
                                            date=ago(1),
                                            server_date=datetime.utcnow(),
                                            type=const.REPORT_TYPE_BALANCE)

        txn = StockTransaction(
            report=report,
            section_id=const.SECTION_TYPE_STOCK,
            type=const.TRANSACTION_TYPE_STOCKONHAND,
            subtype=initial,
            case_id=case_id,
            product_id=product_id,
            stock_on_hand=Decimal(10),
        )
        txn.save()

        saved = StockTransaction.objects.get(id=txn.id)
        self.assertEqual(final, saved.subtype)
Beispiel #3
0
    def setUpClass(cls):
        super(TestGetValuesByProduct, cls).setUpClass()
        cls.data = [
            {
                "product": "coke",
                "section": "soh",
                "balance": 32
            },
            {
                "product": "coke",
                "section": "consumption",
                "balance": 63
            },
            {
                "product": "surge",
                "section": "soh",
                "balance": 85
            },
            {
                "product": "fanta",
                "section": "soh",
                "balance": 11
            },
        ]
        product_ids = {p['product'] for p in cls.data}

        SQLProduct.objects.bulk_create([
            SQLProduct(domain=cls.domain_name, product_id=id, code=id)
            for id in product_ids
        ])
Beispiel #4
0
    def setUp(self):
        super(TestGetValuesByProduct, self).setUp()
        self.ledger_processor = FormProcessorInterface(
            domain=self.domain_name).ledger_processor
        self.domain_obj = create_domain(self.domain_name)
        SQLProduct.objects.bulk_create([
            SQLProduct(domain=self.domain_name,
                       product_id=data['product_id'],
                       code=data['product']) for data in self.data
        ])

        transactions_flat = []
        self.transactions = {}
        for d in self.data:
            product = d['product']
            product_id = d['product_id']
            section = d['section']
            balance = d['balance']
            transactions_flat.append(
                StockTransactionHelper(case_id=self.case_id,
                                       section_id=section,
                                       product_id=product_id,
                                       action='soh',
                                       quantity=balance,
                                       timestamp=datetime.utcnow()))
            self.transactions.setdefault(self.case_id,
                                         {}).setdefault(section,
                                                        {})[product] = balance

        self.new_stock_report, self.form = self.create_report(
            transactions_flat)
        self._create_models_for_stock_report_helper(self.form,
                                                    self.new_stock_report)
    def setUpClass(cls):
        cls.domain = Domain(name='test')
        cls.domain.save()

        cls.case_id = uuid.uuid4().hex
        CommCareCase(
            _id=cls.case_id,
            domain='fakedomain',
        ).save()

        cls.product_id = uuid.uuid4().hex
        SQLProduct(product_id=cls.product_id).save()
Beispiel #6
0
    def setUpClass(cls):
        super(LogisticsConsumptionTest, cls).setUpClass()
        cls.domain = Domain(name='test')
        cls.domain.save()

        cls.case_id = uuid.uuid4().hex
        CommCareCase(
            _id=cls.case_id,
            domain='fakedomain',
        ).save()

        cls.product_id = uuid.uuid4().hex
        SQLProduct(product_id=cls.product_id, domain='fakedomain').save()
Beispiel #7
0
    def setUp(self):
        # create case
        self.case_id = uuid.uuid4().hex
        CommCareCase(
            _id=self.case_id,
            domain='fakedomain',
        ).save()

        self.product_id = uuid.uuid4().hex
        SQLProduct(product_id=self.product_id).save()
        self._stock_report = functools.partial(_stock_report, self.case_id, self.product_id)
        self._receipt_report = functools.partial(_receipt_report, self.case_id, self.product_id)
        self._test_config = ConsumptionConfiguration.test_config()
        self._compute_consumption = functools.partial(compute_daily_consumption, self.case_id,
                                                      self.product_id, now, configuration=self._test_config)