Skip to content

Commit

Permalink
Merge PR #144 into 14.0
Browse files Browse the repository at this point in the history
Signed-off-by simahawk
  • Loading branch information
OCA-git-bot committed Oct 9, 2024
2 parents b10177f + 1181fbb commit ace63a3
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 16 deletions.
10 changes: 6 additions & 4 deletions connector_importer/models/record.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,18 +107,20 @@ def _run_import(self, use_job=True):
# that needs to be imported
new_self = self.with_context(queue_job__no_delay=not use_job)
for config in self.recordset_id.available_importers():
result = new_self.with_delay(
**self._run_import_job_params(config)
).import_record(config)
res[config.model] = result
if self.debug_mode() or not use_job:
result = new_self.import_record(config)
# debug mode, no job here: reset it!
self.write({"job_id": False})
else:
result = new_self.with_delay(
**self._run_import_job_params(config)
).import_record(config)
# FIXME: we should have a o2m here otherwise
# w/ multiple importers for the same record
# we keep the reference on w/ the last job.
self.write({"job_id": result.db_record().id})
res[config.model] = result

return res

def _run_import_job_params(self, config):
Expand Down
40 changes: 30 additions & 10 deletions connector_importer/tests/test_record_importer.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,32 @@ def test_importer_create(self):
expected = {
model: {"created": 10, "errored": 0, "updated": 0, "skipped": 0},
}
delayable = res[model]
self.assertEqual(delayable.result, expected[model])
result = res[model]
self.assertEqual(result, expected[model])
for k, v in expected[model].items():
self.assertEqual(len(report[model][k]), v)
self.assertEqual(self.env[model].search_count([("ref", "like", "id_%")]), 10)

@mute_logger("[importer]")
def test_importer_create_debug_mode_off(self):
# set them on record
self.record.set_data(self.fake_lines)
self.record.backend_id.debug_mode = False
res = self.record._run_import(use_job=True)
self.recordset.get_report()
# in any case we'll get this per each model if the import is not broken
model = "res.partner"
expected = {
model: {"created": 10, "errored": 0, "updated": 0, "skipped": 0},
}
delayable = res[model]
result = delayable.perform()
self.assertEqual(result, expected[model])
result = {model: result}
for k, v in expected[model].items():
self.assertEqual(result[model][k], v)
self.assertEqual(self.env[model].search_count([("ref", "like", "id_%")]), 10)

@mute_logger("[importer]")
def test_importer_skip(self):
# generate 10 records
Expand All @@ -61,8 +81,8 @@ def test_importer_skip(self):
report = self.recordset.get_report()
model = "res.partner"
expected = {model: {"created": 8, "errored": 0, "updated": 0, "skipped": 2}}
delayable = res[model]
self.assertEqual(delayable.result, expected[model])
result = res[model]
self.assertEqual(result, expected[model])
for k, v in expected[model].items():
self.assertEqual(len(report[model][k]), v)
skipped_msg1 = report[model]["skipped"][0]["message"]
Expand All @@ -82,8 +102,8 @@ def test_importer_update(self):
report = self.recordset.get_report()
model = "res.partner"
expected = {model: {"created": 10, "errored": 0, "updated": 0, "skipped": 0}}
delayable = res[model]
self.assertEqual(delayable.result, expected[model])
result = res[model]
self.assertEqual(result, expected[model])
for k, v in expected[model].items():
self.assertEqual(len(report[model][k]), v)
# now run it a second time
Expand All @@ -93,8 +113,8 @@ def test_importer_update(self):
res = self.record.run_import()
report = self.recordset.get_report()
expected = {model: {"created": 0, "errored": 0, "updated": 10, "skipped": 0}}
delayable = res[model]
self.assertEqual(delayable.result, expected[model])
result = res[model]
self.assertEqual(result, expected[model])
for k, v in expected[model].items():
self.assertEqual(len(report[model][k]), v)
# now run it a second time
Expand All @@ -104,8 +124,8 @@ def test_importer_update(self):
res = self.record.run_import()
report = self.recordset.get_report()
expected = {model: {"created": 0, "errored": 0, "updated": 0, "skipped": 10}}
delayable = res[model]
self.assertEqual(delayable.result, expected[model])
result = res[model]
self.assertEqual(result, expected[model])
for k, v in expected[model].items():
self.assertEqual(len(report[model][k]), v)
skipped_msg1 = report[model]["skipped"][0]["message"]
Expand Down
4 changes: 2 additions & 2 deletions connector_importer/tests/test_record_importer_xmlid.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ def test_importer_create(self):
report = self.recordset.get_report()
model = "res.partner"
expected = {model: {"created": 10, "errored": 0, "updated": 0, "skipped": 0}}
delayable = res[model]
self.assertEqual(delayable.result, expected[model])
result = res[model]
self.assertEqual(result, expected[model])
for k, v in expected[model].items():
self.assertEqual(len(report[model][k]), v)
self.assertEqual(self.env[model].search_count([("ref", "like", "id_%")]), 10)
Expand Down

0 comments on commit ace63a3

Please sign in to comment.