New file import format (ARGUS +ICIS)
This commit is contained in:
@@ -5190,6 +5190,111 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
self.assertEqual(result[0]['mid_price'], '75.25')
|
||||
self.assertEqual(result[0]['high_price'], '75.25')
|
||||
|
||||
@with_transaction()
|
||||
def test_import_historical_all_sources_uses_mapping_table(self):
|
||||
'all sources import maps source columns to standard price values'
|
||||
ImportPrices = Pool().get('purchase_trade.import_prices')
|
||||
ns = {'s': 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'}
|
||||
sheet = ElementTree.fromstring('''
|
||||
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
|
||||
<sheetData>
|
||||
<row r="1">
|
||||
<c r="A1" t="inlineStr"><is><t>Copyright</t></is></c>
|
||||
</row>
|
||||
<row r="2">
|
||||
<c r="A2" t="inlineStr"><is><t>combined_x000D_
|
||||
description</t></is></c>
|
||||
<c r="B2" t="inlineStr"><is><t>Original Mid</t></is></c>
|
||||
<c r="C2" t="inlineStr"><is><t>Original High</t></is></c>
|
||||
<c r="D2" t="inlineStr"><is><t>Original Low</t></is></c>
|
||||
</row>
|
||||
<row r="3">
|
||||
<c r="A3"><v>46191</v></c>
|
||||
<c r="B3"><v>470</v></c>
|
||||
<c r="C3"><v>480</v></c>
|
||||
<c r="D3"><v>460</v></c>
|
||||
</row>
|
||||
</sheetData>
|
||||
</worksheet>
|
||||
''')
|
||||
rows = sheet.findall('.//s:sheetData/s:row', ns)
|
||||
mapping = [
|
||||
{
|
||||
'excel_tab': 'Argus Download',
|
||||
'original_price_index': 'Original Mid',
|
||||
'source': 'ARGUS',
|
||||
'column_destination': 'mid_price',
|
||||
'standard_price_index': 'ARGUS-CFR Brasil',
|
||||
'index_description': 'Brazil CFR',
|
||||
},
|
||||
{
|
||||
'excel_tab': 'Argus Download',
|
||||
'original_price_index': 'Original High',
|
||||
'source': 'ARGUS',
|
||||
'column_destination': 'high_price',
|
||||
'standard_price_index': 'ARGUS-CFR Brasil',
|
||||
'index_description': 'Brazil CFR',
|
||||
},
|
||||
{
|
||||
'excel_tab': 'Argus Download',
|
||||
'original_price_index': 'Original Low',
|
||||
'source': 'ARGUS',
|
||||
'column_destination': 'low_price',
|
||||
'standard_price_index': 'ARGUS-CFR Brasil',
|
||||
'index_description': 'Brazil CFR',
|
||||
},
|
||||
{
|
||||
'excel_tab': 'Acuity Download',
|
||||
'original_price_index': 'Missing Header',
|
||||
'source': 'ACUITY',
|
||||
'column_destination': 'mid_price',
|
||||
'standard_price_index': 'ACUITY-Missing',
|
||||
'index_description': 'Missing',
|
||||
},
|
||||
]
|
||||
|
||||
result = ImportPrices._read_historical_all_sources_rows(
|
||||
{'Argus Download': rows}, mapping, [], ns)
|
||||
|
||||
self.assertEqual(len(result), 1)
|
||||
self.assertEqual(result[0]['price_index'], 'ARGUS-CFR Brasil')
|
||||
self.assertEqual(result[0]['price_date'], '46191')
|
||||
self.assertEqual(result[0]['mid_price'], '470')
|
||||
self.assertEqual(result[0]['price_value'], '470')
|
||||
self.assertEqual(result[0]['high_price'], '480')
|
||||
self.assertEqual(result[0]['low_price'], '460')
|
||||
self.assertEqual(result[0]['_source'], 'ARGUS')
|
||||
self.assertEqual(result[0]['_price_desc'], 'Brazil CFR')
|
||||
|
||||
def test_import_historical_all_sources_requires_exact_tab_match(self):
|
||||
'all sources import ignores similarly named source sheets'
|
||||
ImportPrices = Pool().get('purchase_trade.import_prices')
|
||||
|
||||
result = ImportPrices._matching_sheet_name(
|
||||
{
|
||||
'Acuity Download CODELCO': [],
|
||||
},
|
||||
'Acuity Download')
|
||||
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_import_price_index_values_uses_mapping_metadata(self):
|
||||
'created price indexes use mapped description and source area'
|
||||
ImportPrices = Pool().get('purchase_trade.import_prices')
|
||||
area = Mock(id=8)
|
||||
|
||||
with patch.object(
|
||||
ImportPrices, '_first_record',
|
||||
side_effect=lambda model, domain: (
|
||||
area if model == 'price.area' else None)):
|
||||
values = ImportPrices._price_index_values(
|
||||
'ARGUS-CFR Brasil',
|
||||
{'_price_desc': 'Brazil CFR', '_source': 'ARGUS'})
|
||||
|
||||
self.assertEqual(values['price_index'], 'ARGUS-CFR Brasil')
|
||||
self.assertEqual(values['price_desc'], 'Brazil CFR')
|
||||
self.assertEqual(values['price_area'], 8)
|
||||
|
||||
def test_pricing_component_matrix_returns_generic_line_price(self):
|
||||
'matrix pricing can use an unconditional matrix line as a component price'
|
||||
Component = Pool().get('pricing.component')
|
||||
|
||||
Reference in New Issue
Block a user