Exemplo n.º 1
0
def test_goods_nomenclature_successor_importer_create(
    run_xml_import,
    date_ranges,
):

    good = factories.GoodsNomenclatureFactory(
        update_type=UpdateType.CREATE.value,
        valid_between=date_ranges.normal,
    )
    successor = factories.GoodsNomenclatureFactory(
        update_type=UpdateType.CREATE.value,
        valid_between=date_ranges.adjacent_later,
    )

    run_xml_import(
        lambda: factories.GoodsNomenclatureSuccessorFactory.build(
            replaced_goods_nomenclature=good,
            absorbed_into_goods_nomenclature=successor,
            update_type=UpdateType.CREATE.value,
        ),
        serializers.GoodsNomenclatureSuccessorSerializer,
    )

    db_link = models.GoodsNomenclatureSuccessor.objects.get(
        replaced_goods_nomenclature__sid=good.sid, )
    assert db_link

    db_good = models.GoodsNomenclature.objects.get(sid=good.sid)
    assert db_good.successors.get() == successor
Exemplo n.º 2
0
def test_goods_nomenclature_successor_importer_create(valid_user, date_ranges):
    good = factories.GoodsNomenclatureFactory(
        update_type=UpdateType.CREATE.value,
        valid_between=date_ranges.normal,
    )
    successor = factories.GoodsNomenclatureFactory(
        update_type=UpdateType.CREATE.value,
        valid_between=date_ranges.adjacent_later,
    )
    successor_link = factories.GoodsNomenclatureSuccessorFactory.build(
        replaced_goods_nomenclature=good,
        absorbed_into_goods_nomenclature=successor,
        update_type=UpdateType.CREATE.value,
    )

    xml = generate_test_import_xml(
        serializers.GoodsNomenclatureSuccessorSerializer(
            successor_link,
            context={"format": "xml"},
        ).data,
    )

    process_taric_xml_stream(
        xml,
        username=valid_user.username,
        status=WorkflowStatus.PUBLISHED.value,
    )

    db_link = models.GoodsNomenclatureSuccessor.objects.get(
        replaced_goods_nomenclature__sid=good.sid,
    )
    assert db_link

    db_good = models.GoodsNomenclature.objects.get(sid=good.sid)
    assert db_good.successors.get() == successor
Exemplo n.º 3
0
def test_goods_nomenclature_successor_importer_delete(valid_user, date_ranges):
    good = factories.GoodsNomenclatureFactory(
        update_type=UpdateType.CREATE.value,
        valid_between=date_ranges.normal,
    )
    successor = factories.GoodsNomenclatureFactory(
        update_type=UpdateType.CREATE.value,
        valid_between=date_ranges.adjacent_later,
    )
    factories.GoodsNomenclatureSuccessorFactory(
        replaced_goods_nomenclature=good,
        absorbed_into_goods_nomenclature=successor,
        update_type=UpdateType.CREATE.value,
    )

    updated_good = factories.GoodsNomenclatureFactory(
        sid=good.sid,
        item_id=good.item_id,
        suffix=good.suffix,
        version_group=good.version_group,
        update_type=UpdateType.UPDATE.value,
        valid_between=date_ranges.no_end,
    )

    successor_link = factories.GoodsNomenclatureSuccessorFactory.build(
        replaced_goods_nomenclature=updated_good,
        absorbed_into_goods_nomenclature=successor,
        update_type=UpdateType.DELETE.value,
    )

    xml = generate_test_import_xml(
        serializers.GoodsNomenclatureSuccessorSerializer(
            successor_link,
            context={"format": "xml"},
        ).data,
    )

    process_taric_xml_stream(
        xml,
        username=valid_user.username,
        status=WorkflowStatus.PUBLISHED.value,
    )

    db_link = models.GoodsNomenclatureSuccessor.objects.filter(
        replaced_goods_nomenclature__sid=good.sid,
    )
    assert not db_link.latest_approved().exists()
    assert db_link.latest_deleted().exists()
Exemplo n.º 4
0
def test_commodity_code_change_performs_DELETE_and_CREATE(
        GoodsNomenclatureFactory):
    goods_nomenclature = (GoodsNomenclatureFactory()
                          if GoodsNomenclatureFactory else None)
    measure = factories.MeasureFactory.create(
        goods_nomenclature=goods_nomenclature)
    new_nomenclature = factories.GoodsNomenclatureFactory()

    assert Measure.objects.count() == 1

    factories.MeasureFactory.create(
        version_group=measure.version_group,
        update_type=UpdateType.UPDATE,
        goods_nomenclature=new_nomenclature,
    )

    deleted_measure = Measure.objects.filter(
        update_type=UpdateType.DELETE).first()
    created_measure = Measure.objects.filter(
        goods_nomenclature=new_nomenclature,
        update_type=UpdateType.CREATE,
    ).first()

    assert deleted_measure is not None
    assert created_measure is not None
    assert Measure.objects.count() == 3
Exemplo n.º 5
0
def measure_data(date_ranges) -> Dict:
    return {
        "duty_sentence": "0.00 %",
        "geographical_area": factories.GeographicalAreaFactory(),
        "goods_nomenclature": factories.GoodsNomenclatureFactory(),
        "measure_type": factories.MeasureTypeFactory(),
        "validity_start": date_ranges.no_end.lower,
        "validity_end": date_ranges.no_end.upper,
    }
Exemplo n.º 6
0
def test_starts_on_nomenclature_start(
    measure_data,
    date_ranges: Dates,
    measure_creation_pattern: MeasureCreationPattern,
):
    measure_data["goods_nomenclature"] = factories.GoodsNomenclatureFactory(
        valid_between=date_ranges.adjacent_later, )
    measure = measure_creation_pattern.create(**measure_data)
    assert measure.valid_between.lower == date_ranges.adjacent_later.lower
Exemplo n.º 7
0
def test_ends_on_nomenclature_end(
    measure_data,
    date_ranges: Dates,
    measure_creation_pattern: MeasureCreationPattern,
):
    measure_data["goods_nomenclature"] = factories.GoodsNomenclatureFactory(
        valid_between=date_ranges.starts_with_normal, )
    measure = measure_creation_pattern.create(**measure_data)
    assert measure.valid_between.upper == date_ranges.starts_with_normal.upper
Exemplo n.º 8
0
def test_starts_on_minimum_date(
    measure_data,
    date_ranges: Dates,
    measure_creation_pattern: MeasureCreationPattern,
):
    measure_data["validity_start"] = date_ranges.no_end_before(
        date_ranges.now).lower
    measure_data["goods_nomenclature"] = factories.GoodsNomenclatureFactory(
        valid_between=TaricDateRange(date_ranges.now, None), )

    measure = measure_creation_pattern.create(**measure_data)
    assert measure.valid_between.lower == date_ranges.now
Exemplo n.º 9
0
def test_goods_nomenclature_successor_importer_delete(
    run_xml_import,
    date_ranges,
):
    good = factories.GoodsNomenclatureFactory(
        update_type=UpdateType.CREATE.value,
        valid_between=date_ranges.normal,
    )
    successor = factories.GoodsNomenclatureFactory(
        update_type=UpdateType.CREATE.value,
        valid_between=date_ranges.adjacent_later,
    )
    factories.GoodsNomenclatureSuccessorFactory(
        replaced_goods_nomenclature=good,
        absorbed_into_goods_nomenclature=successor,
        update_type=UpdateType.CREATE.value,
    )

    updated_good = factories.GoodsNomenclatureFactory(
        sid=good.sid,
        item_id=good.item_id,
        suffix=good.suffix,
        version_group=good.version_group,
        update_type=UpdateType.UPDATE.value,
        valid_between=date_ranges.no_end,
    )

    run_xml_import(
        lambda: factories.GoodsNomenclatureSuccessorFactory.build(
            replaced_goods_nomenclature=updated_good,
            absorbed_into_goods_nomenclature=successor,
            update_type=UpdateType.DELETE.value,
        ),
        serializers.GoodsNomenclatureSuccessorSerializer,
    )

    db_link = models.GoodsNomenclatureSuccessor.objects.filter(
        replaced_goods_nomenclature__sid=good.sid, )
    assert not db_link.latest_approved().exists()
    assert db_link.latest_deleted().exists()