コード例 #1
0
ファイル: test_api.py プロジェクト: azizur77/etools
 def setUp(self):
     super().setUp()
     self.unicef_staff = UserFactory(is_staff=True)
     self.header = FundsCommitmentHeaderFactory(
         vendor_code="Vendor Code",
         fc_number="FC001",
     )
コード例 #2
0
ファイル: test_synchronizers.py プロジェクト: unicef/etools
 def setUp(self):
     self.data = {
         "VENDOR_CODE": "C321",
         "FC_NUMBER": "123",
         "FC_DOC_DATE": "15-Jan-17",
         "FR_TYPE": "Type",
         "CURRENCY": "USD",
         "FC_DOCUMENT_TEXT": "Random text",
         "EXCHANGE_RATE": "1.5",
         "RESP_PERSON": "Resp Person",
         "LINE_ITEM": "987",
         "WBS_ELEMENT": "WBS",
         "GRANT_NBR": "456",
         "FUND": "Fund",
         "GL_ACCOUNT": "0405",
         "DUE_DATE": "05-May-17",
         "FR_NUMBER": "333",
         "COMMITMENT_AMOUNT_USD": "20.00",
         "COMMITMENT_AMOUNT_DC": "25.00",
         "AMOUNT_CHANGED": "5.00",
         "FC_LINE_ITEM_TEXT": "Line of text",
     }
     self.expected_header = {
         "vendor_code": "C321",
         "fc_number": "123",
         "document_date": datetime.date(2017, 1, 15),
         "fc_type": "Type",
         "currency": "USD",
         "document_text": "Random text",
         "exchange_rate": "1.5",
         "responsible_person": "Resp Person",
     }
     self.expected_line_item = {
         "line_item": "987",
         "wbs": "WBS",
         "grant_number": "456",
         "fc_number": "123",
         "fr_number": "333",
         "fc_ref_number": "123-987",
         "fund": "Fund",
         "due_date": datetime.date(2017, 5, 5),
         "commitment_amount": Decimal("20.00"),
         "commitment_amount_dc": Decimal("25.00"),
         "amount_changed": Decimal("5.00"),
         "line_item_text": "Line of text",
     }
     self.date_fields = ["document_date", "due_date"]
     self.decimal_fields = [
         "commitment_amount",
         "commitment_amount_dc",
         "amount_changed",
     ]
     self.fund_item = FundsCommitmentItemFactory(
         fc_ref_number="123-987",
         line_item=self.data["LINE_ITEM"],
         wbs=self.data["WBS_ELEMENT"],
         grant_number=self.data["GRANT_NBR"],
         fund=self.data["FUND"],
         gl_account=self.data["GL_ACCOUNT"],
         due_date=datetime.date(2017, 5, 5),
         fr_number=self.data["FR_NUMBER"],
         commitment_amount=self.data["COMMITMENT_AMOUNT_USD"],
         commitment_amount_dc=self.data["COMMITMENT_AMOUNT_DC"],
         amount_changed=self.data["AMOUNT_CHANGED"],
         line_item_text=self.data["FC_LINE_ITEM_TEXT"],
     )
     self.fund_header = FundsCommitmentHeaderFactory(
         vendor_code=self.data["VENDOR_CODE"],
         fc_number=self.data["FC_NUMBER"],
         document_date=datetime.date(2017, 1, 15),
         fc_type=self.data["FR_TYPE"],
         currency=self.data["CURRENCY"],
         document_text=self.data["FC_DOCUMENT_TEXT"],
         exchange_rate=self.data["EXCHANGE_RATE"],
         responsible_person=self.data["RESP_PERSON"],
     )
     self.adapter = synchronizers.FundCommitmentSynchronizer(self.country)
コード例 #3
0
ファイル: test_synchronizers.py プロジェクト: unicef/etools
class TestFundCommitmentSynchronizer(BaseTenantTestCase):
    @classmethod
    def setUpTestData(cls):
        cls.country = Country.objects.first()

    def setUp(self):
        self.data = {
            "VENDOR_CODE": "C321",
            "FC_NUMBER": "123",
            "FC_DOC_DATE": "15-Jan-17",
            "FR_TYPE": "Type",
            "CURRENCY": "USD",
            "FC_DOCUMENT_TEXT": "Random text",
            "EXCHANGE_RATE": "1.5",
            "RESP_PERSON": "Resp Person",
            "LINE_ITEM": "987",
            "WBS_ELEMENT": "WBS",
            "GRANT_NBR": "456",
            "FUND": "Fund",
            "GL_ACCOUNT": "0405",
            "DUE_DATE": "05-May-17",
            "FR_NUMBER": "333",
            "COMMITMENT_AMOUNT_USD": "20.00",
            "COMMITMENT_AMOUNT_DC": "25.00",
            "AMOUNT_CHANGED": "5.00",
            "FC_LINE_ITEM_TEXT": "Line of text",
        }
        self.expected_header = {
            "vendor_code": "C321",
            "fc_number": "123",
            "document_date": datetime.date(2017, 1, 15),
            "fc_type": "Type",
            "currency": "USD",
            "document_text": "Random text",
            "exchange_rate": "1.5",
            "responsible_person": "Resp Person",
        }
        self.expected_line_item = {
            "line_item": "987",
            "wbs": "WBS",
            "grant_number": "456",
            "fc_number": "123",
            "fr_number": "333",
            "fc_ref_number": "123-987",
            "fund": "Fund",
            "due_date": datetime.date(2017, 5, 5),
            "commitment_amount": Decimal("20.00"),
            "commitment_amount_dc": Decimal("25.00"),
            "amount_changed": Decimal("5.00"),
            "line_item_text": "Line of text",
        }
        self.date_fields = ["document_date", "due_date"]
        self.decimal_fields = [
            "commitment_amount",
            "commitment_amount_dc",
            "amount_changed",
        ]
        self.fund_item = FundsCommitmentItemFactory(
            fc_ref_number="123-987",
            line_item=self.data["LINE_ITEM"],
            wbs=self.data["WBS_ELEMENT"],
            grant_number=self.data["GRANT_NBR"],
            fund=self.data["FUND"],
            gl_account=self.data["GL_ACCOUNT"],
            due_date=datetime.date(2017, 5, 5),
            fr_number=self.data["FR_NUMBER"],
            commitment_amount=self.data["COMMITMENT_AMOUNT_USD"],
            commitment_amount_dc=self.data["COMMITMENT_AMOUNT_DC"],
            amount_changed=self.data["AMOUNT_CHANGED"],
            line_item_text=self.data["FC_LINE_ITEM_TEXT"],
        )
        self.fund_header = FundsCommitmentHeaderFactory(
            vendor_code=self.data["VENDOR_CODE"],
            fc_number=self.data["FC_NUMBER"],
            document_date=datetime.date(2017, 1, 15),
            fc_type=self.data["FR_TYPE"],
            currency=self.data["CURRENCY"],
            document_text=self.data["FC_DOCUMENT_TEXT"],
            exchange_rate=self.data["EXCHANGE_RATE"],
            responsible_person=self.data["RESP_PERSON"],
        )
        self.adapter = synchronizers.FundCommitmentSynchronizer(self.country)

    def test_init(self):
        a = synchronizers.FundCommitmentSynchronizer(self.country)
        self.assertEqual(a.header_records, {})
        self.assertEqual(a.item_records, {})
        self.assertEqual(a.fc_headers, {})

    def test_convert_records(self):
        self.assertEqual(
            self.adapter._convert_records(json.dumps([self.data])),
            [self.data]
        )

    def test_filter_records_no_commitment_amount_usd(self):
        """If no commitment amount usd then ignore record"""
        self.data["COMMITMENT_AMOUNT_USD"] = ""
        records = {"ROWSET": {"ROW": [self.data]}}
        response = self.adapter._filter_records(records)
        self.assertEqual(response, [])

    def test_filter_records_no_fc_number(self):
        """If no fc number then ignore record"""
        self.data["FC_NUMBER"] = ""
        records = {"ROWSET": {"ROW": [self.data]}}
        response = self.adapter._filter_records(records)
        self.assertEqual(response, [])

    def test_filter_records(self):
        """If have both fc number and commitment amount usd then keep record"""
        records = {"ROWSET": {"ROW": [self.data]}}
        response = self.adapter._filter_records(records)
        self.assertEqual(response, [self.data])

    def test_get_value_for_field_dates(self):
        """If a set field (date) then convert to datetime date type"""
        for field in self.date_fields:
            response = self.adapter.get_value_for_field(field, "15-Jan-14")
            self.assertEqual(response, datetime.date(2014, 1, 15))

    def test_get_value_for_field_amount(self):
        """If a set field (amount) then strip commas"""
        for field in self.decimal_fields:
            response = self.adapter.get_value_for_field(field, "12,500")
            self.assertEqual(response, Decimal("12500"))

    def test_get_value_for_field(self):
        """If NOT a set field (date, or amount) then return value"""
        response = self.adapter.get_value_for_field("random", "val")
        self.assertEqual(response, "val")

    def test_get_fc_item_number(self):
        self.assertEqual(self.adapter.get_fc_item_number(self.data), "123-987")

    def test_map_header_from_record(self):
        response = self.adapter.map_header_from_record(self.data)
        self.assertEqual(response, self.expected_header)

    def test_map_line_item_record(self):
        response = self.adapter.map_line_item_record(self.data)
        self.assertEqual(response, self.expected_line_item)

    def test_set_mapping(self):
        self.adapter.set_mapping([self.data])
        self.assertEqual(
            self.adapter.header_records,
            {"123": self.expected_header}
        )
        self.assertEqual(
            self.adapter.item_records,
            {"123-987": self.expected_line_item}
        )

    def test_equal_fields_decimal(self):
        """If field is amt field then do comp_decimal comparison"""
        for field in self.decimal_fields:
            self.assertTrue(self.adapter.equal_fields(field, "20.00", "20.00"))
            self.assertFalse(self.adapter.equal_fields(field, "20.0", "20.1"))

    def test_equal_fields_line_item(self):
        """If field is line item then convert obj field to str
        prior to comparison
        """
        self.assertTrue(self.adapter.equal_fields("line_item", 20, "20"))
        self.assertFalse(self.adapter.equal_fields("line_item", 21, "22"))

    def test_equal_fields(self):
        """If field is not special do normal comparison"""
        self.assertTrue(self.adapter.equal_fields("fr_number", "123", "123"))
        self.assertFalse(self.adapter.equal_fields("fr_number", "124", "123"))

    def test_update_object(self):
        """Check that if a value does not match object then return True"""
        self.fund_item.fc_ref_number = "321-123",
        record = self.adapter.map_line_item_record(self.data)
        del record["fc_number"]
        self.assertTrue(self.adapter.update_obj(self.fund_item, record))
        self.assertEqual(self.fund_item.fc_ref_number, "123-987")

    def test_update_object_no_change(self):
        """Check that if all values match object then return False"""
        record = self.adapter.map_line_item_record(self.data)
        del record["fc_number"]
        self.assertFalse(self.adapter.update_obj(self.fund_item, record))

    def test_header_sync(self):
        """Check that FundsCommitmentHeader record updated
        if values differ
        """
        self.fund_header.vendor_code = "Code321"
        self.fund_header.save()
        self.adapter.set_mapping([self.data])
        updated, to_create = self.adapter.header_sync()
        self.assertEqual(updated, 1)
        self.assertEqual(to_create, 0)
        fund_header_updated = FundsCommitmentHeader.objects.get(
            pk=self.fund_header.pk
        )
        self.assertEqual(
            fund_header_updated.vendor_code,
            self.data["VENDOR_CODE"]
        )

    def test_header_sync_create(self):
        """Check that FundsCommitmentHeader record created
        if fr_number does not exist
        """
        self.data["FC_NUMBER"] = "333"
        fund_qs = FundsCommitmentHeader.objects.filter(fc_number="333")
        self.assertFalse(fund_qs.exists())
        self.adapter.set_mapping([self.data])
        updated, to_create = self.adapter.header_sync()
        self.assertEqual(updated, 0)
        self.assertEqual(to_create, 1)
        self.assertTrue(fund_qs.exists())

    def test_li_sync_update(self):
        """Check that FundsCommitmentItem record updated
        if values differ
        """
        self.fund_item.commitment_amount = "30.00"
        self.fund_item.save()
        self.adapter.set_mapping([self.data])
        updated, to_create = self.adapter.li_sync()
        self.assertEqual(updated, 1)
        self.assertEqual(to_create, 0)
        fund_item_updated = FundsCommitmentItem.objects.get(
            pk=self.fund_item.pk
        )
        self.assertEqual(
            fund_item_updated.commitment_amount,
            Decimal(self.data["COMMITMENT_AMOUNT_USD"])
        )

    def test_li_sync_create(self):
        """Check that FundsCommitmentItem record created
        if fc_ref_number does not exist
        """
        self.data["LINE_ITEM"] = "333"
        fund_qs = FundsCommitmentItem.objects.filter(
            fc_ref_number="123-333"
        )
        self.assertFalse(fund_qs.exists())
        self.adapter.set_mapping([self.data])
        self.adapter.map_header_objects([self.fund_header])
        updated, to_create = self.adapter.li_sync()
        self.assertEqual(updated, 0)
        self.assertEqual(to_create, 1)
        self.assertTrue(fund_qs.exists())

    def test_save_records(self):
        self.data["LINE_ITEM"] = "333"
        response = self.adapter._save_records(
            {"ROWSET": {"ROW": [self.data]}}
        )
        self.assertEqual(response, 1)
コード例 #4
0
 def setUpTestData(cls):
     cls.fc_header = FundsCommitmentHeaderFactory(fc_number='23')
コード例 #5
0
 def test_funds_commitment_header(self):
     funds_commitment_header = FundsCommitmentHeaderFactory.build(
         fc_number='R\xe4dda Barnen')
     self.assertEqual(str(funds_commitment_header), 'R\xe4dda Barnen')
コード例 #6
0
 def setUp(self):
     self.data = {
         "VENDOR_CODE": "C321",
         "FC_NUMBER": "123",
         "FC_DOC_DATE": "15-Jan-17",
         "FR_TYPE": "Type",
         "CURRENCY": "USD",
         "FC_DOCUMENT_TEXT": "Random text",
         "EXCHANGE_RATE": "1.5",
         "RESP_PERSON": "Resp Person",
         "LINE_ITEM": "987",
         "WBS_ELEMENT": "WBS",
         "GRANT_NBR": "456",
         "FUND": "Fund",
         "GL_ACCOUNT": "0405",
         "DUE_DATE": "05-May-17",
         "FR_NUMBER": "333",
         "COMMITMENT_AMOUNT_USD": "20.00",
         "COMMITMENT_AMOUNT_DC": "25.00",
         "AMOUNT_CHANGED": "5.00",
         "FC_LINE_ITEM_TEXT": "Line of text",
     }
     self.expected_header = {
         "vendor_code": "C321",
         "fc_number": "123",
         "document_date": datetime.date(2017, 1, 15),
         "fc_type": "Type",
         "currency": "USD",
         "document_text": "Random text",
         "exchange_rate": "1.5",
         "responsible_person": "Resp Person",
     }
     self.expected_line_item = {
         "line_item": "987",
         "wbs": "WBS",
         "grant_number": "456",
         "fc_number": "123",
         "fr_number": "333",
         "fc_ref_number": "123-987",
         "fund": "Fund",
         "due_date": datetime.date(2017, 5, 5),
         "commitment_amount": Decimal("20.00"),
         "commitment_amount_dc": Decimal("25.00"),
         "amount_changed": Decimal("5.00"),
         "line_item_text": "Line of text",
     }
     self.date_fields = ["document_date", "due_date"]
     self.decimal_fields = [
         "commitment_amount",
         "commitment_amount_dc",
         "amount_changed",
     ]
     self.fund_item = FundsCommitmentItemFactory(
         fc_ref_number="123-987",
         line_item=self.data["LINE_ITEM"],
         wbs=self.data["WBS_ELEMENT"],
         grant_number=self.data["GRANT_NBR"],
         fund=self.data["FUND"],
         gl_account=self.data["GL_ACCOUNT"],
         due_date=datetime.date(2017, 5, 5),
         fr_number=self.data["FR_NUMBER"],
         commitment_amount=self.data["COMMITMENT_AMOUNT_USD"],
         commitment_amount_dc=self.data["COMMITMENT_AMOUNT_DC"],
         amount_changed=self.data["AMOUNT_CHANGED"],
         line_item_text=self.data["FC_LINE_ITEM_TEXT"],
     )
     self.fund_header = FundsCommitmentHeaderFactory(
         vendor_code=self.data["VENDOR_CODE"],
         fc_number=self.data["FC_NUMBER"],
         document_date=datetime.date(2017, 1, 15),
         fc_type=self.data["FR_TYPE"],
         currency=self.data["CURRENCY"],
         document_text=self.data["FC_DOCUMENT_TEXT"],
         exchange_rate=self.data["EXCHANGE_RATE"],
         responsible_person=self.data["RESP_PERSON"],
     )
     self.adapter = adapter.FundCommitmentSynchronizer(self.country)
コード例 #7
0
class TestFundCommitmentSynchronizer(BaseTenantTestCase):
    @classmethod
    def setUpTestData(cls):
        cls.country = Country.objects.first()

    def setUp(self):
        self.data = {
            "VENDOR_CODE": "C321",
            "FC_NUMBER": "123",
            "FC_DOC_DATE": "15-Jan-17",
            "FR_TYPE": "Type",
            "CURRENCY": "USD",
            "FC_DOCUMENT_TEXT": "Random text",
            "EXCHANGE_RATE": "1.5",
            "RESP_PERSON": "Resp Person",
            "LINE_ITEM": "987",
            "WBS_ELEMENT": "WBS",
            "GRANT_NBR": "456",
            "FUND": "Fund",
            "GL_ACCOUNT": "0405",
            "DUE_DATE": "05-May-17",
            "FR_NUMBER": "333",
            "COMMITMENT_AMOUNT_USD": "20.00",
            "COMMITMENT_AMOUNT_DC": "25.00",
            "AMOUNT_CHANGED": "5.00",
            "FC_LINE_ITEM_TEXT": "Line of text",
        }
        self.expected_header = {
            "vendor_code": "C321",
            "fc_number": "123",
            "document_date": datetime.date(2017, 1, 15),
            "fc_type": "Type",
            "currency": "USD",
            "document_text": "Random text",
            "exchange_rate": "1.5",
            "responsible_person": "Resp Person",
        }
        self.expected_line_item = {
            "line_item": "987",
            "wbs": "WBS",
            "grant_number": "456",
            "fc_number": "123",
            "fr_number": "333",
            "fc_ref_number": "123-987",
            "fund": "Fund",
            "due_date": datetime.date(2017, 5, 5),
            "commitment_amount": Decimal("20.00"),
            "commitment_amount_dc": Decimal("25.00"),
            "amount_changed": Decimal("5.00"),
            "line_item_text": "Line of text",
        }
        self.date_fields = ["document_date", "due_date"]
        self.decimal_fields = [
            "commitment_amount",
            "commitment_amount_dc",
            "amount_changed",
        ]
        self.fund_item = FundsCommitmentItemFactory(
            fc_ref_number="123-987",
            line_item=self.data["LINE_ITEM"],
            wbs=self.data["WBS_ELEMENT"],
            grant_number=self.data["GRANT_NBR"],
            fund=self.data["FUND"],
            gl_account=self.data["GL_ACCOUNT"],
            due_date=datetime.date(2017, 5, 5),
            fr_number=self.data["FR_NUMBER"],
            commitment_amount=self.data["COMMITMENT_AMOUNT_USD"],
            commitment_amount_dc=self.data["COMMITMENT_AMOUNT_DC"],
            amount_changed=self.data["AMOUNT_CHANGED"],
            line_item_text=self.data["FC_LINE_ITEM_TEXT"],
        )
        self.fund_header = FundsCommitmentHeaderFactory(
            vendor_code=self.data["VENDOR_CODE"],
            fc_number=self.data["FC_NUMBER"],
            document_date=datetime.date(2017, 1, 15),
            fc_type=self.data["FR_TYPE"],
            currency=self.data["CURRENCY"],
            document_text=self.data["FC_DOCUMENT_TEXT"],
            exchange_rate=self.data["EXCHANGE_RATE"],
            responsible_person=self.data["RESP_PERSON"],
        )
        self.adapter = adapter.FundCommitmentSynchronizer(self.country)

    def test_init(self):
        a = adapter.FundCommitmentSynchronizer(self.country)
        self.assertEqual(a.header_records, {})
        self.assertEqual(a.item_records, {})
        self.assertEqual(a.fc_headers, {})

    def test_convert_records(self):
        self.assertEqual(
            self.adapter._convert_records(json.dumps([self.data])),
            [self.data])

    def test_filter_records_no_commitment_amount_usd(self):
        """If no commitment amount usd then ignore record"""
        self.data["COMMITMENT_AMOUNT_USD"] = ""
        records = {"ROWSET": {"ROW": [self.data]}}
        response = self.adapter._filter_records(records)
        self.assertEqual(response, [])

    def test_filter_records_no_fc_number(self):
        """If no fc number then ignore record"""
        self.data["FC_NUMBER"] = ""
        records = {"ROWSET": {"ROW": [self.data]}}
        response = self.adapter._filter_records(records)
        self.assertEqual(response, [])

    def test_filter_records(self):
        """If have both fc number and commitment amount usd then keep record"""
        records = {"ROWSET": {"ROW": [self.data]}}
        response = self.adapter._filter_records(records)
        self.assertEqual(response, [self.data])

    def test_get_value_for_field_dates(self):
        """If a set field (date) then convert to datetime date type"""
        for field in self.date_fields:
            response = self.adapter.get_value_for_field(field, "15-Jan-14")
            self.assertEqual(response, datetime.date(2014, 1, 15))

    def test_get_value_for_field_amount(self):
        """If a set field (amount) then strip commas"""
        for field in self.decimal_fields:
            response = self.adapter.get_value_for_field(field, "12,500")
            self.assertEqual(response, Decimal("12500"))

    def test_get_value_for_field(self):
        """If NOT a set field (date, or amount) then return value"""
        response = self.adapter.get_value_for_field("random", "val")
        self.assertEqual(response, "val")

    def test_get_fc_item_number(self):
        self.assertEqual(self.adapter.get_fc_item_number(self.data), "123-987")

    def test_map_header_from_record(self):
        response = self.adapter.map_header_from_record(self.data)
        self.assertEqual(response, self.expected_header)

    def test_map_line_item_record(self):
        response = self.adapter.map_line_item_record(self.data)
        self.assertEqual(response, self.expected_line_item)

    def test_set_mapping(self):
        self.adapter.set_mapping([self.data])
        self.assertEqual(self.adapter.header_records,
                         {"123": self.expected_header})
        self.assertEqual(self.adapter.item_records,
                         {"123-987": self.expected_line_item})

    def test_equal_fields_decimal(self):
        """If field is amt field then do comp_decimal comparison"""
        for field in self.decimal_fields:
            self.assertTrue(self.adapter.equal_fields(field, "20.00", "20.00"))
            self.assertFalse(self.adapter.equal_fields(field, "20.0", "20.1"))

    def test_equal_fields_line_item(self):
        """If field is line item then convert obj field to str
        prior to comparison
        """
        self.assertTrue(self.adapter.equal_fields("line_item", 20, "20"))
        self.assertFalse(self.adapter.equal_fields("line_item", 21, "22"))

    def test_equal_fields(self):
        """If field is not special do normal comparison"""
        self.assertTrue(self.adapter.equal_fields("fr_number", "123", "123"))
        self.assertFalse(self.adapter.equal_fields("fr_number", "124", "123"))

    def test_update_object(self):
        """Check that if a value does not match object then return True"""
        self.fund_item.fc_ref_number = "321-123",
        record = self.adapter.map_line_item_record(self.data)
        del record["fc_number"]
        self.assertTrue(self.adapter.update_obj(self.fund_item, record))
        self.assertEqual(self.fund_item.fc_ref_number, "123-987")

    def test_update_object_no_change(self):
        """Check that if all values match object then return False"""
        record = self.adapter.map_line_item_record(self.data)
        del record["fc_number"]
        self.assertFalse(self.adapter.update_obj(self.fund_item, record))

    def test_header_sync(self):
        """Check that FundsCommitmentHeader record updated
        if values differ
        """
        self.fund_header.vendor_code = "Code321"
        self.fund_header.save()
        self.adapter.set_mapping([self.data])
        updated, to_create = self.adapter.header_sync()
        self.assertEqual(updated, 1)
        self.assertEqual(to_create, 0)
        fund_header_updated = FundsCommitmentHeader.objects.get(
            pk=self.fund_header.pk)
        self.assertEqual(fund_header_updated.vendor_code,
                         self.data["VENDOR_CODE"])

    def test_header_sync_create(self):
        """Check that FundsCommitmentHeader record created
        if fr_number does not exist
        """
        self.data["FC_NUMBER"] = "333"
        fund_qs = FundsCommitmentHeader.objects.filter(fc_number="333")
        self.assertFalse(fund_qs.exists())
        self.adapter.set_mapping([self.data])
        updated, to_create = self.adapter.header_sync()
        self.assertEqual(updated, 0)
        self.assertEqual(to_create, 1)
        self.assertTrue(fund_qs.exists())

    def test_li_sync_update(self):
        """Check that FundsCommitmentItem record updated
        if values differ
        """
        self.fund_item.commitment_amount = "30.00"
        self.fund_item.save()
        self.adapter.set_mapping([self.data])
        updated, to_create = self.adapter.li_sync()
        self.assertEqual(updated, 1)
        self.assertEqual(to_create, 0)
        fund_item_updated = FundsCommitmentItem.objects.get(
            pk=self.fund_item.pk)
        self.assertEqual(fund_item_updated.commitment_amount,
                         Decimal(self.data["COMMITMENT_AMOUNT_USD"]))

    def test_li_sync_create(self):
        """Check that FundsCommitmentItem record created
        if fc_ref_number does not exist
        """
        self.data["LINE_ITEM"] = "333"
        fund_qs = FundsCommitmentItem.objects.filter(fc_ref_number="123-333")
        self.assertFalse(fund_qs.exists())
        self.adapter.set_mapping([self.data])
        self.adapter.map_header_objects([self.fund_header])
        updated, to_create = self.adapter.li_sync()
        self.assertEqual(updated, 0)
        self.assertEqual(to_create, 1)
        self.assertTrue(fund_qs.exists())

    def test_save_records(self):
        self.data["LINE_ITEM"] = "333"
        response = self.adapter._save_records({"ROWSET": {"ROW": [self.data]}})
        self.assertEqual(response, 1)
コード例 #8
0
ファイル: test_models.py プロジェクト: unicef/etools
 def test_funds_commitment_header(self):
     funds_commitment_header = FundsCommitmentHeaderFactory.build(fc_number='R\xe4dda Barnen')
     self.assertEqual(str(funds_commitment_header), 'R\xe4dda Barnen')