def apply_applied_prolongation(test_case):
    add_document_to_prolongation(
        test_case,
        test_case.auction_id,
        test_case.contract_id,
        test_case.prolongation_id,
    )
    patch_data = {
        'data': {
            'status': 'applied',
        }
    }

    # apply prolongation for the first time
    prolongation_patch_response = test_case.app.patch_json(
        PATHS['prolongation'].format(auction_id=test_case.auction_id,
                                     contract_id=test_case.contract_id,
                                     prolongation_id=test_case.prolongation_id,
                                     token=test_case.auction_token),
        patch_data)
    test_case.assertEqual(prolongation_patch_response.status, '200 OK')
    # try to apply already applied prolongation
    prolongation_patch_response = test_case.app.patch_json(
        PATHS['prolongation'].format(auction_id=test_case.auction_id,
                                     contract_id=test_case.contract_id,
                                     prolongation_id=test_case.prolongation_id,
                                     token=test_case.auction_token),
        patch_data,
        status=403)
    test_case.assertEqual(prolongation_patch_response.status, '403 Forbidden')
Example #2
0
def get_list_of_documents(test_case):
    add_document_to_prolongation(
        test_case,
        test_case.auction_id,
        test_case.contract_id,
        test_case.prolongation_id,
    )
    add_document_to_prolongation(
        test_case,
        test_case.auction_id,
        test_case.contract_id,
        test_case.prolongation_id,
    )
    list_of_docs_response = test_case.app.get(
        PATHS['prolongation_documents'].format(
            auction_id=test_case.auction_id,
            contract_id=test_case.contract_id,
            prolongation_id=test_case.prolongation_id,
            token=test_case.auction_token
        )
    )
    test_case.assertIsInstance(
        list_of_docs_response.json['data'],
        list
    )
    test_case.assertEqual(
        len(list_of_docs_response.json['data']),
        2
    )
Example #3
0
def apply_prolongation_short(test_case):
    pre_prolongation_contract = get_related_contract(test_case)
    add_document_to_prolongation(
        test_case,
        test_case.auction_id,
        test_case.contract_id,
        test_case.prolongation_id,
    )

    patch_data = {
        'data': {
            'status': 'applied',
        }
    }
    patch_prolongation_response = test_case.app.patch_json(
        PATHS['prolongation'].format(
            auction_id=test_case.auction_id,
            contract_id=test_case.contract_id,
            prolongation_id=test_case.prolongation_id,
            token=test_case.auction_token
        ),
        patch_data
    )

    test_case.assertEqual(
        patch_prolongation_response.status,
        '200 OK'
    )
    retrieved_prolongation = Prolongation(
        patch_prolongation_response.json['data']
    )
    retrieved_prolongation.validate()
    test_case.assertEqual(
        retrieved_prolongation.status,
        'applied'
    )
    add_document_to_prolongation(
        test_case,
        test_case.auction_id,
        test_case.contract_id,
        test_case.prolongation_id,
    )
    post_prolongation_contract = get_related_contract(test_case)
    auction = get_auction(test_case)
    contract_signing_period_end_date = calculate_business_date(
        pre_prolongation_contract.signingPeriod.startDate,
        PROLONGATION_SHORT_PERIOD,
        context=auction,
        working_days=True,
        specific_hour=CONTRACT_SIGNING_PERIOD_END_DATE_HOUR
    )
    test_case.assertEqual(
        post_prolongation_contract.signingPeriod.endDate,
        contract_signing_period_end_date
    )
Example #4
0
def patch_document(test_case):
    document_id, document_key = add_document_to_prolongation(
        test_case,
        test_case.auction_id,
        test_case.contract_id,
        test_case.prolongation_id,
    )
    test_case.app.get(
        PATHS['prolongation'].format(
            auction_id=test_case.auction_id,
            contract_id=test_case.contract_id,
            prolongation_id=test_case.prolongation_id,
            token=test_case.auction_token
        )
    )
    patch_document_response = test_case.app.patch_json(
        PATHS['prolongation_document'].format(
            auction_id=test_case.auction_id,
            contract_id=test_case.contract_id,
            prolongation_id=test_case.prolongation_id,
            document_id=document_id,
            key=document_key
        ),
        {'data':
            {'title': 'updated.doc'}
         }
    )
    test_case.assertEqual(
        patch_document_response.status,
        '200 OK'
    )
Example #5
0
def get_document(test_case):
    document_id, document_key = add_document_to_prolongation(
        test_case,
        test_case.auction_id,
        test_case.contract_id,
        test_case.prolongation_id,
    )
    url = PATHS['prolongation_document'].format(
        auction_id=test_case.auction_id,
        contract_id=test_case.contract_id,
        prolongation_id=test_case.prolongation_id,
        document_id=document_id,
        key=document_key
    )
    get_document_response = test_case.app.get(
        url
    )
    test_case.assertEqual(
        get_document_response.status,
        '200 OK'
    )
    test_case.assertEqual(
        get_document_response.status,
        '200 OK'
    )
    test_case.assertEqual(
        get_document_response.content_type,
        'application/json'
    )
def apply_prolongation_triple_times(test_case):
    pre_prolongation_contract = get_related_contract(test_case)
    add_document_to_prolongation(
        test_case,
        test_case.auction_id,
        test_case.contract_id,
        test_case.prolongation_id,
    )
    add_document_to_prolongation(
        test_case,
        test_case.auction_id,
        test_case.contract_id,
        test_case.prolongation2_id,
    )
    add_document_to_prolongation(
        test_case,
        test_case.auction_id,
        test_case.contract_id,
        test_case.prolongation3_id,
    )

    patch_data = {
        'data': {
            'status': 'applied',
        }
    }
    # apply some short prolongation to be able apply long one
    short_prolongation_patch_response = test_case.app.patch_json(
        PATHS['prolongation'].format(auction_id=test_case.auction_id,
                                     contract_id=test_case.contract_id,
                                     prolongation_id=test_case.prolongation_id,
                                     token=test_case.auction_token),
        patch_data)

    # apply long prolongation
    test_case.app.patch_json(
        PATHS['prolongation'].format(
            auction_id=test_case.auction_id,
            contract_id=test_case.contract_id,
            prolongation_id=test_case.prolongation2_id,
            token=test_case.auction_token), patch_data)

    third_patch_prolongation_response = test_case.app.patch_json(
        PATHS['prolongation'].format(
            auction_id=test_case.auction_id,
            contract_id=test_case.contract_id,
            prolongation_id=test_case.prolongation3_id,
            token=test_case.auction_token),
        patch_data,
        status=403)
    test_case.assertEqual(third_patch_prolongation_response.status,
                          '403 Forbidden')
    test_case.assertEqual(third_patch_prolongation_response.content_type,
                          'application/json')
    test_case.assertEqual(
        third_patch_prolongation_response.json['errors'][0]["description"],
        "Contract can be prolongated for 2 times only.")

    # check if contract signing was prolongated for the third time
    post_prolongation_contract = get_related_contract(test_case)
    auction = get_auction(test_case)
    contract_signing_period_end_date = calculate_business_date(
        pre_prolongation_contract.signingPeriod.startDate,
        PROLONGATION_LONG_PERIOD,
        context=auction,
        working_days=True,
        specific_hour=CONTRACT_SIGNING_PERIOD_END_DATE_HOUR)
    test_case.assertEqual(post_prolongation_contract.signingPeriod.endDate,
                          contract_signing_period_end_date)