示例#1
0
    def test_api_update_for_old_contract_proforma(
            self, mocked_downloader_factory_cls, mocked_client_cls, _):
        mocked_client, template_downloader, _ = prepare_mocks_handler_mocks(
            mocked_client_cls, mocked_downloader_factory_cls)

        updated_document = deepcopy(tender['documents'][1])
        updated_document['previousVersions'] = [
            deepcopy(tender['documents'][1])
        ]
        updated_document['templateId'] = 'paper0000001'
        mocked_client.get_resource_item_subitem.return_value = munchify(
            {'data': updated_document})

        prepare_template_downloader_result(template_downloader)

        custom_tender = deepcopy(tender)
        custom_template_docs = deepcopy(template_docs)
        custom_template_docs[0]['dateModified'] = date_newer_contract_proforma
        custom_template_docs[1]['dateModified'] = date_newer_contract_proforma
        custom_template_docs[2]['dateModified'] = date_newer_contract_proforma
        custom_tender['documents'] += custom_template_docs

        handler = TemplateUploaderHandler(self.config, 'cache_db')
        handler.process_resource(custom_tender)

        self.assertEqual(template_downloader.get_template_by_id.call_count, 1)
        self.assertEqual(mocked_client.update_document.call_count, 0)
        self.assertEqual(mocked_client.upload_document.call_count, 0)
示例#2
0
    def test_update_document_to_api(self, mocked_downloader_factory_cls,
                                    mocked_client_cls, _, mocked_bytesio):
        mocked_client, template_downloader, _ = prepare_mocks_handler_mocks(
            mocked_client_cls, mocked_downloader_factory_cls)
        handler = TemplateUploaderHandler(self.config, 'cache_db')

        doc = {'data': {'id': 'someid', 'some': 'field'}}
        doc = munchify(doc)
        mocked_client.update_document.return_value = deepcopy(doc)

        test_resource = {'id': 'resource_id'}
        test_template_doc = {'id': 'template doc id'}
        test_cp_doc = {'id': 'contract proforma doc id'}
        test_file = 'test_file'

        wrapped_file = 'wrappedfile'
        mocked_bytesio.return_value = wrapped_file

        handler._update_document_in_api(test_resource, test_template_doc,
                                        test_cp_doc, test_file,
                                        'test_doc_type')

        mocked_bytesio.assert_called_with(test_file)

        additional_data = {
            'documentOf': 'document',
            'relatedItem': test_cp_doc['id'],
        }
        mocked_client.update_document.assert_called_once_with(
            wrapped_file,
            test_resource['id'],
            test_template_doc['id'],
            doc_type='test_doc_type',
            additional_doc_data=additional_data)
示例#3
0
    def test_api_update_one_old_template(self, mocked_downloader_factory_cls,
                                         mocked_client_cls, _, mocked_bytesio):
        mocked_client, template_downloader, _ = prepare_mocks_handler_mocks(
            mocked_client_cls, mocked_downloader_factory_cls)

        updated_document = deepcopy(tender['documents'][1])
        updated_document['previousVersions'] = [
            deepcopy(tender['documents'][1])
        ]
        mocked_client.get_resource_item_subitem.return_value = munchify(
            {'data': updated_document})

        template_info = prepare_template_downloader_result(template_downloader)

        custom_tender = deepcopy(tender)
        custom_template_docs = deepcopy(template_docs)
        custom_template_docs[1]['dateModified'] = date_newer_contract_proforma

        custom_tender['documents'] += custom_template_docs

        wrapped_file = 'wrappedfile'
        mocked_bytesio.return_value = wrapped_file

        handler = TemplateUploaderHandler(self.config, 'cache_db')
        handler.process_resource(custom_tender)

        self.assertEqual(template_downloader.get_template_by_id.call_count, 1)

        cp_doc = handler.get_contract_proforma_documents(tender)[0]
        template_downloader.get_template_by_id.assert_called_with(
            cp_doc['templateId'])

        self.assertEqual(mocked_bytesio.call_count, 0)
        self.assertEqual(mocked_client.update_document.call_count, 0)
        self.assertEqual(mocked_client.upload_document.call_count, 0)
示例#4
0
    def test_api_upload_document(self, mocked_downloader_factory_cls,
                                 mocked_client_cls, _, mocked_bytesio):
        mocked_client, template_downloader, _ = prepare_mocks_handler_mocks(
            mocked_client_cls, mocked_downloader_factory_cls)
        mocked_client.get_resource_item_subitem.return_value = munchify(
            {'data': tender['documents'][1]})

        template_info = prepare_template_downloader_result(template_downloader)

        wrapped_file = 'wrappedfile'
        mocked_bytesio.return_value = wrapped_file

        handler = TemplateUploaderHandler(self.config, 'cache_db')
        handler.process_resource(tender)

        self.assertEqual(template_downloader.get_template_by_id.call_count, 1)

        cp_doc = handler.get_contract_proforma_documents(tender)[0]
        template_downloader.get_template_by_id.assert_called_with(
            cp_doc['templateId'])

        calls = [
            call(template_info['template']),
            call(template_info['scheme']),
            call(template_info['form']),
        ]
        mocked_bytesio.assert_has_calls(calls, any_order=True)

        self.assertEqual(mocked_client.upload_document.call_count, 3)
        doc = tender['documents'][1]
        additional_data = {
            'documentOf': 'document',
            'relatedItem': doc['id'],
        }

        calls = [
            call(wrapped_file,
                 tender['id'],
                 doc_type='contractTemplate',
                 additional_doc_data=additional_data),
            call(wrapped_file,
                 tender['id'],
                 doc_type='contractSchema',
                 additional_doc_data=additional_data),
            call(wrapped_file,
                 tender['id'],
                 doc_type='contractForm',
                 additional_doc_data=additional_data),
        ]
        mocked_client.upload_document.assert_has_calls(calls, any_order=True)

        self.assertEqual(mocked_client.update_document.call_count, 0)
示例#5
0
    def test_init(self, mocked_downloader_factory_cls, mocked_client_cls, _):
        mocked_client, _, factory = prepare_mocks_handler_mocks(
            mocked_client_cls, mocked_downloader_factory_cls)

        handler = TemplateUploaderHandler(self.config, 'cache_db')

        self.assertEquals(handler.cache_db, 'cache_db')
        self.assertEquals(
            handler.handler_config,
            self.config['worker_config']['handler_templateUploader'])
        self.assertEquals(handler.main_config, self.config)

        self.assertEqual(mocked_client_cls.call_count, 1)
        mocked_client_cls.assert_called_with(
            key=handler.handler_config.get('resources_api_token'),
            resource=handler.handler_config['resource'],
            host_url=handler.handler_config['resources_api_server'],
            api_version=handler.handler_config['resources_api_version'],
            ds_config=handler.handler_config.get('DS', {}),
        )

        self.assertEqual(mocked_downloader_factory_cls.call_count, 1)
        self.assertEqual(factory.get_template_downloader.call_count, 1)
        factory.get_template_downloader.assert_called_with(
            handler.handler_config['template_downloader'])
示例#6
0
    def test_api_update_missed_file(self, mocked_downloader_factory_cls,
                                    mocked_client_cls, _, mocked_bytesio):
        mocked_client, template_downloader, _ = prepare_mocks_handler_mocks(
            mocked_client_cls, mocked_downloader_factory_cls)
        mocked_client.get_resource_item_subitem.return_value = munchify(
            {'data': tender['documents'][1]})

        template_info = prepare_template_downloader_result(template_downloader)

        custom_tender = deepcopy(tender)
        custom_template_docs = deepcopy(template_docs)
        custom_template_docs.pop(1)
        custom_template_docs[0]['dateModified'] = date_newer_contract_proforma
        custom_template_docs[1]['dateModified'] = date_newer_contract_proforma
        custom_tender['documents'] += custom_template_docs

        wrapped_file = 'wrappedfile'
        mocked_bytesio.return_value = wrapped_file

        handler = TemplateUploaderHandler(self.config, 'cache_db')
        handler.process_resource(custom_tender)

        self.assertEqual(template_downloader.get_template_by_id.call_count, 1)

        cp_doc = handler.get_contract_proforma_documents(tender)[0]
        template_downloader.get_template_by_id.assert_called_with(
            cp_doc['templateId'])

        mocked_bytesio.assert_called_once_with(template_info['scheme'])

        self.assertEqual(mocked_client.upload_document.call_count, 1)
        doc = tender['documents'][1]
        additional_data = {
            'documentOf': 'document',
            'relatedItem': doc['id'],
        }
        mocked_client.upload_document.assert_called_once_with(
            wrapped_file,
            tender['id'],
            doc_type='contractSchema',
            additional_doc_data=additional_data)
        self.assertEqual(mocked_client.update_document.call_count, 0)
示例#7
0
    def test_get_contract_proforma_document(self,
                                            mocked_downloader_factory_cls,
                                            mocked_client_cls, _):
        mocked_client, template_downloader, _ = prepare_mocks_handler_mocks(
            mocked_client_cls, mocked_downloader_factory_cls)
        handler = TemplateUploaderHandler(self.config, 'cache_db')

        test_data = {
            'documents': [{
                'field1': 'field1',
                'documentType': 'notContractProforma'
            }, {
                'field2': 'field2',
                'documentType': 'contractProforma'
            }, {
                'field3': 'field3',
                'documentType': 'contractProforma'
            }]
        }
        docs = handler.get_contract_proforma_documents(test_data)
        self.assertEqual(len(docs), 2)
        self.assertEqual(docs[0], test_data['documents'][1])
        self.assertEqual(docs[1], test_data['documents'][2])