コード例 #1
0
 def test_should_filter_alerts_by_runnable_type_when_delivery(self):
     delivery_alert = AlertFactory(runnable=DeliveryFactory())
     delivery_alert_ids, delivery_alerts = self.__respond_by_alert_type(
         'delivery')
     self.assertEqual(Alert.objects.count(), 1)
     self.assertEqual(len(delivery_alerts), 1)
     self.assertIn(delivery_alert.id, delivery_alert_ids)
コード例 #2
0
    def test_should_get_export_list_for_direct_delivery(self, mock_build_contact):
        self.clean()
        contact = {'firstName': 'John', 'lastName': 'Ssenteza', 'phone': '+256 782 123456'}
        mock_build_contact.return_value = contact
        delivery = DeliveryFactory()
        consignee_name = 'the consignee'
        consignee = ConsigneeFactory(name=consignee_name)
        order_number = 5404939
        mama_kit = 'Mama kit'
        material_code = 'Code 33'
        ro_item = PurchaseOrderItemFactory(item=ItemFactory(description=mama_kit, material_code=material_code),
                                           purchase_order=PurchaseOrderFactory(order_number=order_number))
        delivery_date = '2015-09-06'
        luweero = 'Luweero'
        remark = 'some remark'
        DeliveryNodeFactory(distribution_plan=delivery, delivery_date=delivery_date,
                            consignee=consignee, item=ro_item, location=luweero, remark=remark)

        header = [
            'Purchase Order', 'Item Description', 'Material Code', 'Quantity Shipped', 'Shipment Date',
            'Implementing Partner', 'Contact Person', 'Contact Number', 'District', 'Is End User',
            'Is Tracked', 'Remarks']
        row_one = [order_number, mama_kit, material_code, 10, delivery_date, consignee_name,
                   '%s %s' % (contact['firstName'], contact['lastName']),
                   contact['phone'], luweero, 'Yes', 'No', remark]

        expected_data = [header, row_one]

        csv_exporter = DeliveryCSVExporter.create_delivery_exporter_by_type('Direct', self.HOSTNAME)

        logger.info(expected_data)
        logger.info(csv_exporter.assemble_csv_data())

        self.assertEqual(csv_exporter.assemble_csv_data(), expected_data)
コード例 #3
0
    def setup_multiple_nodes_with_answers(self, number_of_nodes):
        consignee_one = ConsigneeFactory(name='consignee one')
        programme_one = ProgrammeFactory(name='my first programme')
        po_item = PurchaseOrderItemFactory(item=ItemFactory(description='Mama kit'),
                                           purchase_order=PurchaseOrderFactory(order_number=329293))

        flow = FlowFactory(label='WEB')
        question_1 = MultipleChoiceQuestionFactory(text='Was the item received?', label='itemReceived', flow=flow,
                                                   position=1)
        option_1 = OptionFactory(text='Yes', question=question_1)
        question_2 = NumericQuestionFactory(text='How much was received?', label='amountReceived', flow=flow)
        question_3 = MultipleChoiceQuestionFactory(text='What is the quality of the product?', label='qualityOfProduct',
                                                   flow=flow, position=3)
        option_3 = OptionFactory(text='Damaged', question=question_3)
        question_4 = MultipleChoiceQuestionFactory(text='Are you satisfied with the product?',
                                                   label='satisfiedWithProduct', flow=flow, position=4)
        option_4 = OptionFactory(text='Yes', question=question_4)
        question_5 = TextQuestionFactory(label='dateOfReceipt', flow=flow, text='When was Delivery Received?')
        nodes = []

        for index in range(number_of_nodes):
            node = DeliveryNodeFactory(consignee=consignee_one, item=po_item, programme=programme_one,
                                       distribution_plan=DeliveryFactory(track=True))

            run_one = RunFactory(runnable=node)
            MultipleChoiceAnswerFactory(question=question_1, run=run_one, value=option_1)
            NumericAnswerFactory(question=question_2, run=run_one, value=5)
            MultipleChoiceAnswerFactory(question=question_3, run=run_one, value=option_3)
            MultipleChoiceAnswerFactory(question=question_4, run=run_one, value=option_4)
            TextAnswerFactory(run=run_one, question=question_5, value='2014-10-10')
            nodes.append(node)

        return nodes
コード例 #4
0
    def test_should_get_a_nodes_ip_from_the_root_node_of_the_node_delivery(
            self):
        delivery = DeliveryFactory()

        root_node = DeliveryNodeFactory(distribution_plan=delivery)
        self.assertEqual(
            root_node.get_ip(), {
                'id': root_node.id,
                'consignee': root_node.consignee,
                'location': root_node.location
            })

        intermediary_node = DeliveryNodeFactory(distribution_plan=delivery,
                                                parents=[(root_node, 5)])
        self.assertEqual(
            intermediary_node.get_ip(), {
                'id': root_node.id,
                'consignee': root_node.consignee,
                'location': root_node.location
            })

        leaf_node = DeliveryNodeFactory(parents=[(intermediary_node, 3)],
                                        distribution_plan=delivery)
        self.assertEqual(
            leaf_node.get_ip(), {
                'id': root_node.id,
                'consignee': root_node.consignee,
                'location': root_node.location
            })
コード例 #5
0
    def setup_responses(self):
        DeliveryNode.objects.all().delete()
        MultipleChoiceQuestion.objects.all().delete()
        MultipleChoiceAnswer.objects.all().delete()
        from eums.fixtures.ip_questions import seed_ip_questions
        questions, options, _ = seed_ip_questions()

        self.programme = ProgrammeFactory(name='my-program')
        self.ip = ConsigneeFactory()

        self.today = FakeDate.today()
        po_item = PurchaseOrderItemFactory(quantity=100, value=1000)
        ip_delivery_one = DeliveryFactory(
            location='some location',
            track=True,
            programme=self.programme,
            consignee=self.ip,
            ip=self.ip,
            delivery_date=self.today + datetime.timedelta(days=3))

        DeliveryNodeFactory(tree_position=DeliveryNode.IMPLEMENTING_PARTNER, quantity=10,
                            item=po_item, distribution_plan=ip_delivery_one, consignee=self.ip)

        other_delivery = DeliveryFactory(
            location='Other location',
            delivery_date=self.today,
            track=True)
        DeliveryNodeFactory(tree_position=DeliveryNode.IMPLEMENTING_PARTNER, quantity=20,
                            item=po_item, distribution_plan=other_delivery)

        MultipleChoiceAnswerFactory(
            run=RunFactory(runnable=ip_delivery_one, status=Run.STATUS.scheduled),
            question=questions['WAS_DELIVERY_RECEIVED'], value=options['DELIVERY_WAS_RECEIVED'])

        MultipleChoiceAnswerFactory(
            run=RunFactory(runnable=ip_delivery_one, status=Run.STATUS.scheduled),
            question=questions['IS_DELIVERY_IN_GOOD_ORDER'], value=options['IN_GOOD_CONDITION'])

        non_response_delivery_one = DeliveryFactory(
            delivery_date=self.today + datetime.timedelta(days=4),
            location='some location',
            track=True)

        DeliveryNodeFactory(tree_position=DeliveryNode.IMPLEMENTING_PARTNER, quantity=30,
                            item=po_item, distribution_plan=non_response_delivery_one)

        RunFactory(runnable=non_response_delivery_one, status=Run.STATUS.scheduled)
コード例 #6
0
    def test_gets_correct_last_shipment_date_value_for_stock_report(self):
        programme = ProgrammeFactory(name='special_program')
        delivery = DeliveryFactory(track=True, programme=programme)
        sales_order = SalesOrderFactory(programme=programme)
        purchase_order = PurchaseOrderFactory(order_number=4748278, sales_order=sales_order)
        po_item = PurchaseOrderItemFactory(purchase_order=purchase_order,
                                           item=ItemFactory(material_code='Code 23', description='Jerrycans'))

        ip_node_one = DeliveryNodeFactory(distribution_plan=delivery, item=po_item, quantity=40,
                                          tree_position=DistributionPlanNode.IMPLEMENTING_PARTNER,
                                          delivery_date=FakeDate.build(2015, 03, 19))
        run_one = RunFactory(runnable=ip_node_one)
        quantity_received_qn = NumericQuestion.objects.get(label='amountReceived')
        NumericAnswerFactory(question=quantity_received_qn, value=39, run=run_one)

        last_shipment_date = FakeDate.build(2015, 10, 07)
        ip_node_two = DeliveryNodeFactory(distribution_plan=delivery, item=po_item, quantity=30,
                                          tree_position=DistributionPlanNode.IMPLEMENTING_PARTNER,
                                          delivery_date=last_shipment_date)
        run_two = RunFactory(runnable=ip_node_two)
        NumericAnswerFactory(question=quantity_received_qn, value=40, run=run_two)

        expected_data = [
            {'document_number': purchase_order.order_number,
             'programme': programme.name,
             'last_shipment_date': str(last_shipment_date),
             'total_value_received': Decimal('79'),
             'total_value_dispensed': Decimal('0'),
             'total_value_lost': Decimal('0'),
             'balance': Decimal('79'),
             'items': [{'code': unicode(po_item.item.material_code),
                        'description': unicode(po_item.item.description),
                        'consignee': self.ip.name,
                        'location': ip_node_one.location,
                        'quantity_delivered': 3,
                        'date_delivered': str(self.ip_node_two.delivery_date),
                        'quantity_confirmed': 2,
                        'date_confirmed': '2014-01-02',
                        'quantity_dispatched': 2,
                        'quantity_lost': 0,
                        'balance': 0
                        },
                       {'code': unicode(po_item.item.material_code),
                        'description': unicode(po_item.item.description),
                        'consignee': self.ip.name,
                        'location': ip_node_two.location,
                        'quantity_delivered': 5,
                        'date_delivered': str(self.ip_node_one.delivery_date),
                        'quantity_confirmed': 4,
                        'date_confirmed': '2014-01-01',
                        'quantity_dispatched': 2,
                        'quantity_lost': 0,
                        'balance': 2
                        }]
             }]

        response = self.client.get(ENDPOINT_URL)

        self.assert_api_response_with_correct_last_shipment_date(response, expected_data)
コード例 #7
0
    def test_should_return_false_when_delivery_run_was_cancelled(self):
        delivery = DeliveryFactory()
        question = MultipleChoiceQuestionFactory(label='deliveryReceived')
        option = OptionFactory(text='Yes', question=question)
        run = RunFactory(runnable=delivery, status=Run.STATUS.cancelled)

        MultipleChoiceAnswerFactory(run=run, question=question, value=option)
        self.assertFalse(delivery.is_received())
コード例 #8
0
    def test_should_return_type_of_delivery(self):
        po_item = PurchaseOrderItemFactory()
        delivery = DeliveryFactory()
        DeliveryNodeFactory(distribution_plan=delivery, item=po_item)

        response = self.client.get(ENDPOINT_URL)

        self.assertEqual(response.data[0]['type'], 'Purchase Order')
コード例 #9
0
    def test_should_filter_based_on_outcome(self):
        outcome_one = ProgrammeFactory(name='Outcome One')
        outcome_two = ProgrammeFactory(name='Outcome Two')

        delivery_one = DeliveryFactory(programme=outcome_one, track=True)
        delivery_two = DeliveryFactory(programme=outcome_two, track=True)

        DeliveryNodeFactory(distribution_plan=delivery_one, tree_position=Flow.Label.IMPLEMENTING_PARTNER)
        DeliveryNodeFactory(distribution_plan=delivery_two, tree_position=Flow.Label.IMPLEMENTING_PARTNER)

        endpoint_url = BACKEND_URL + 'stock-report?outcome=%d' % outcome_two.id
        response = self.client.get(endpoint_url)

        results = response.data['results']
        self.assertEqual(len(results), 1)
        self.assertEqual(results[0]['programme'], 'Outcome Two')
        self.assertEqual(len(results[0]['items']), 1)
コード例 #10
0
    def _test_should_provide_delivery_total_value_from_api(self):
        po_item = PurchaseOrderItemFactory(value=200, quantity=100)
        delivery = DeliveryFactory()
        DeliveryNodeFactory(distribution_plan=delivery, item=po_item, quantity=10)

        response = self.client.get(ENDPOINT_URL)

        self.assertEqual(response.data[0]['total_value'], 20)
コード例 #11
0
    def test_should_filter_admin_deliveries_by_date_when_only_form_date_exist(self):
        first_consignee = ConsigneeFactory()
        second_consignee = ConsigneeFactory()

        date = datetime.date(2014, 07, 9)
        first_delivery = DeliveryFactory(consignee=first_consignee, track=True, delivery_date=date)
        second_delivery = DeliveryFactory(consignee=first_consignee, track=True)
        third_delivery = DeliveryFactory(consignee=second_consignee, track=True, delivery_date=date)

        response = self.client.get(ENDPOINT_URL + '?from=2014-07-6')

        ids = map(lambda delivery: delivery['id'], response.data)

        self.assertEqual(response.status_code, 200)
        self.assertIn(first_delivery.id, ids)
        self.assertIn(second_delivery.id, ids)
        self.assertIn(third_delivery.id, ids)
コード例 #12
0
ファイル: test_release_order.py プロジェクト: z0x010/eums
 def test_should_get_correct_track_status_when_delivery_is_tracked(self):
     release_order = ReleaseOrderFactory(order_number=2342)
     release_order_item = ReleaseOrderItemFactory(
         release_order=release_order)
     delivery = DeliveryFactory(track=True)
     DeliveryNodeFactory(distribution_plan=delivery,
                         item=release_order_item,
                         track=True)
     self.assertEqual(release_order.track(), True)
コード例 #13
0
    def test_should_create_delivery(self):
        today = datetime.date.today()
        programme = ProgrammeFactory()
        delivery = DeliveryFactory(programme=programme, delivery_date=today)
        response = self.client.get(ENDPOINT_URL)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.data), 1)
        self.assertEqual(response.data[0]['id'], delivery.id)
コード例 #14
0
    def test_should_return_delivery_with_waybill_number(self):
        release_order = ReleaseOrderFactory(waybill=98765)
        release_order_item = ReleaseOrderItemFactory(
            release_order=release_order)
        delivery = DeliveryFactory()
        DeliveryNodeFactory(distribution_plan=delivery,
                            item=release_order_item)

        self.assertEqual(delivery.number(), 98765)
コード例 #15
0
    def test_should_return_number_of_delivery(self):
        purchase_order = PurchaseOrderFactory(order_number=98765)
        po_item = PurchaseOrderItemFactory(purchase_order=purchase_order)
        delivery = DeliveryFactory()
        DeliveryNodeFactory(distribution_plan=delivery, item=po_item)

        response = self.client.get(ENDPOINT_URL)

        self.assertEqual(response.data[0]['number'], 98765)
コード例 #16
0
ファイル: test_purchase_order.py プロジェクト: z0x010/eums
    def test_should_get_track_status_if_delivery_is_sent_and_tracked_fully(
            self):
        order = PurchaseOrderFactory()
        order_item = PurchaseOrderItemFactory(purchase_order=order,
                                              quantity=100)
        self.assertEqual(order.track(), PurchaseOrder.NOT_TRACKED)

        delivery_one = DeliveryFactory(track=True)
        delivery_two = DeliveryFactory(track=True)
        NodeFactory(item=order_item,
                    distribution_plan=delivery_one,
                    quantity=50,
                    track=True)
        NodeFactory(item=order_item,
                    distribution_plan=delivery_two,
                    quantity=50,
                    track=True)
        self.assertEqual(order.track(), PurchaseOrder.FULLY_TRACKED)
コード例 #17
0
    def test_should_filter_deliveries_by_ip(self):
        first_consignee = ConsigneeFactory()
        second_consignee = ConsigneeFactory()
        first_delivery = DeliveryFactory(consignee=first_consignee, track=True)
        second_delivery = DeliveryFactory(consignee=first_consignee)
        third_delivery = DeliveryFactory(consignee=second_consignee)

        self.logout()
        self.log_consignee_in(consignee=first_consignee)

        response = self.client.get(ENDPOINT_URL)

        ids = map(lambda delivery: delivery['id'], response.data)

        self.assertEqual(response.status_code, 200)
        self.assertIn(first_delivery.id, ids)
        self.assertNotIn(second_delivery.id, ids)
        self.assertNotIn(third_delivery.id, ids)
コード例 #18
0
ファイル: test_release_order.py プロジェクト: z0x010/eums
    def test_should_get_correct_delivery_if_exists(self):
        release_order = ReleaseOrderFactory(order_number=2342)
        release_order_item = ReleaseOrderItemFactory(
            release_order=release_order)
        delivery = DeliveryFactory()

        DeliveryNodeFactory(distribution_plan=delivery,
                            item=release_order_item)

        self.assertEqual(release_order.delivery(), delivery.id)
コード例 #19
0
    def test_should_provide_shipment_received_value_from_api(self):
        delivery = DeliveryFactory()
        question = MultipleChoiceQuestionFactory(label='deliveryReceived')
        option = OptionFactory(text='Yes', question=question)
        run = RunFactory(runnable=delivery)
        MultipleChoiceAnswerFactory(run=run, question=question, value=option)

        response = self.client.get(ENDPOINT_URL)

        self.assertEqual(response.data[0]['shipment_received'], True)
コード例 #20
0
    def setup_responses(self):
        DeliveryNode.objects.all().delete()
        MultipleChoiceQuestion.objects.all().delete()
        MultipleChoiceAnswer.objects.all().delete()
        from eums.fixtures.ip_questions import seed_ip_questions
        questions, options, _ = seed_ip_questions()

        self.programme = ProgrammeFactory(name='my-program')
        self.ip = ConsigneeFactory()

        self.today = FakeDate.today()
        ip_delivery_one = DeliveryFactory(location='some location',
                                          track=True,
                                          programme=self.programme,
                                          consignee=self.ip,
                                          ip=self.ip,
                                          delivery_date=self.today +
                                          datetime.timedelta(days=3))

        DeliveryFactory(location='Other location',
                        delivery_date=self.today,
                        track=True)

        MultipleChoiceAnswerFactory(
            run=RunFactory(runnable=ip_delivery_one,
                           status=Run.STATUS.scheduled),
            question=questions['WAS_DELIVERY_RECEIVED'],
            value=options['DELIVERY_WAS_RECEIVED'])

        MultipleChoiceAnswerFactory(
            run=RunFactory(runnable=ip_delivery_one,
                           status=Run.STATUS.scheduled),
            question=questions['IS_DELIVERY_IN_GOOD_ORDER'],
            value=options['IN_GOOD_CONDITION'])

        non_response_delivery_one = DeliveryFactory(delivery_date=self.today +
                                                    datetime.timedelta(days=4),
                                                    location='some location',
                                                    track=True)

        RunFactory(runnable=non_response_delivery_one,
                   status=Run.STATUS.scheduled)
コード例 #21
0
    def test_should_return_answers_for_delivery(self):
        delivery = DeliveryFactory()
        flow = FlowFactory(label='IMPLEMENTING_PARTNER')

        question_1 = MultipleChoiceQuestionFactory(
            label='deliveryReceived', flow=flow, text='Was Delivery Received?')
        question_2 = TextQuestionFactory(label='dateOfReceipt',
                                         flow=flow,
                                         text='When was Delivery Received?')
        question_3 = NumericQuestionFactory(text='How much was received?',
                                            label='amountReceived',
                                            flow=flow)

        option_yes = OptionFactory(text='Yes', question=question_1)

        run = RunFactory(runnable=delivery)

        multiple_choice_answer = MultipleChoiceAnswerFactory(
            run=run, question=question_1, value=option_yes)
        text_answer = TextAnswerFactory(run=run,
                                        question=question_2,
                                        value='2015-10-10')
        numeric_answer = NumericAnswerFactory(run=run,
                                              question=question_3,
                                              value=10)

        expected_multiple_choice_answer = {
            'question_label': question_1.label,
            'type': 'multipleChoice',
            'text': question_1.text,
            'value': multiple_choice_answer.value.text,
            'options': ['Yes'],
            'position': question_1.position
        }
        expected_text_answer = {
            'question_label': question_2.label,
            'type': 'text',
            'text': question_2.text,
            'value': text_answer.value,
            'position': question_2.position
        }
        expected_numeric_answer = {
            'question_label': question_3.label,
            'type': 'numeric',
            'text': question_3.text,
            'value': numeric_answer.value,
            'position': question_3.position
        }
        answers = delivery.answers()

        self.assertEqual(len(answers), 3)
        self.assertIn(expected_multiple_choice_answer, answers)
        self.assertIn(expected_text_answer, answers)
        self.assertIn(expected_numeric_answer, answers)
コード例 #22
0
    def test_should_return_description_of_purchase_order_item_with_purchase_order_and_order_number(
            self):
        purchase_order = PurchaseOrderFactory(order_number=222333444)
        item = PurchaseOrderItemFactory(purchase_order=purchase_order)
        delivery = DeliveryFactory()
        DeliveryNodeFactory(distribution_plan=delivery, item=item)

        message = DeliveryRunMessage(delivery)

        self.assertRegexpMatches(message.description(), r'purchase order(?i)')
        self.assertRegexpMatches(message.description(), r'222333444')
コード例 #23
0
    def test_should_return_number_of_items_on_a_delivery(self):
        po = PurchaseOrderFactory(order_number=123456)
        po_item_one = PurchaseOrderItemFactory(purchase_order=po)
        po_item_two = PurchaseOrderItemFactory(purchase_order=po)
        delivery = DeliveryFactory()
        DeliveryNodeFactory(distribution_plan=delivery, item=po_item_one)

        self.assertEqual(delivery.number_of_items(), 1)

        DeliveryNodeFactory(distribution_plan=delivery, item=po_item_two)
        self.assertEqual(delivery.number_of_items(), 2)
コード例 #24
0
    def test_should_not_create_alert_when_non_delivery_question_are_answered_no(self):
        answer_values = [
            {"category": {"base": "No"}, "label": "This is not a delivery question"},
            {"category": {"base": "Yes"}, "label": Question.LABEL.isDeliveryInGoodOrder}
        ]
        delivery = DeliveryFactory()

        response_alert_handler = ResponseAlertHandler(runnable=delivery, answer_values=answer_values)
        response_alert_handler.process()

        self.assertEqual(Alert.objects.count(), 0)
コード例 #25
0
ファイル: test_purchase_order.py プロジェクト: z0x010/eums
    def test_should_get_track_status_if_delivery_is_just_saved(self):
        order = PurchaseOrderFactory()
        order_item = PurchaseOrderItemFactory(purchase_order=order,
                                              quantity=100)
        delivery_one = DeliveryFactory(track=False)
        NodeFactory(item=order_item,
                    distribution_plan=delivery_one,
                    quantity=100,
                    track=False)

        self.assertEqual(order.track(), PurchaseOrder.NOT_TRACKED)
コード例 #26
0
    def setUp(self):
        self.po_item_one = PurchaseOrderItemFactory(value=400, quantity=200)
        self.po_item_two = PurchaseOrderItemFactory(value=600, quantity=100)

        self.delivery = DeliveryFactory()
        self.node_one = DeliveryNodeFactory(distribution_plan=self.delivery,
                                            item=self.po_item_one,
                                            quantity=50)
        DeliveryNodeFactory(distribution_plan=self.delivery,
                            item=self.po_item_two,
                            quantity=30)
コード例 #27
0
    def test_should_not_create_alert_when_no_issues_with_delivery(self):
        answer_values = [
            {"category": {"base": "Yes"}, "label": Question.LABEL.deliveryReceived},
            {"category": {"base": "Yes"}, "label": Question.LABEL.isDeliveryInGoodOrder}
        ]
        delivery = DeliveryFactory()

        response_alert_handler = ResponseAlertHandler(runnable=delivery, answer_values=answer_values)
        response_alert_handler.process()

        self.assertEqual(Alert.objects.count(), 0)
コード例 #28
0
    def test_should_return_answers_for_completed_or_scheduled_runs_only(self):
        delivery = DeliveryFactory()
        flow = FlowFactory(label='IMPLEMENTING_PARTNER')

        question_1 = MultipleChoiceQuestionFactory(
            label='deliveryReceived',
            flow=flow,
            text='Was Delivery Received?',
            position=3)
        question_2 = TextQuestionFactory(label='dateOfReceipt',
                                         flow=flow,
                                         text='When was Delivery Received?',
                                         position=1)
        question_3 = TextQuestionFactory(
            label='satisfiedWithProduct',
            flow=flow,
            text='Are you satisfied with product?',
            position=2)

        option_no = OptionFactory(text='No', question=question_1)
        option_yes = OptionFactory(text='Yes', question=question_1)

        run_one = RunFactory(runnable=delivery)

        MultipleChoiceAnswerFactory(question=question_1,
                                    value=option_no,
                                    run=run_one)
        TextAnswerFactory(question=question_2, value="2014-10-10", run=run_one)
        TextAnswerFactory(question=question_3, value="yup", run=run_one)

        answers = delivery.answers()

        self.assertEqual(len(answers), 3)
        self.assertEqual(answers[0]['value'], '2014-10-10')

        run_one.status = 'cancelled'
        run_one.save()

        answers = delivery.answers()

        self.assertEqual(len(answers), 3)
        self.assertEqual(answers[0]['value'], '')

        run_two = RunFactory(runnable=delivery)

        MultipleChoiceAnswerFactory(question=question_1,
                                    value=option_yes,
                                    run=run_two)
        answers = delivery.answers()

        self.assertEqual(len(answers), 3)
        self.assertEqual(answers[0]['value'], '')
        self.assertEqual(answers[1]['value'], '')
        self.assertEqual(answers[2]['value'], 'Yes')
コード例 #29
0
    def test_should_return_true_when_delivery_is_partially_received(self):
        delivery = DeliveryFactory()
        question = MultipleChoiceQuestionFactory(label='deliveryReceived')
        option = OptionFactory(text='Yes', question=question)
        run = RunFactory(runnable=delivery)

        self.assertFalse(delivery.is_received())

        MultipleChoiceAnswerFactory(run=run, question=question, value=option)

        self.assertTrue(delivery.is_partially_received())
コード例 #30
0
def create_distribution_plan_node(test_case, node_details=None):
    if not node_details:
        plan_id = DeliveryFactory().id
        node_details = make_node_details(test_case, plan_id)

    response = test_case.client.post(DISTRIBUTION_PLAN_NODE_ENDPOINT_URL, node_details, format='json')
    test_case.assertEqual(response.status_code, 201)

    formatted_data = response.data
    formatted_data['delivery_date'] = str(formatted_data['delivery_date'])
    return formatted_data