[dataimport] Move stores to new API.
Here is the final store API:
* ``prepare_insert_entity(<entity type>, **kwargs) -> eid``: given an entity
type, attributes and inlined relations, return the eid of the entity to be
inserted, *with no guarantee that anything has been inserted in database*,
* ``prepare_update_entity(<entity type>, eid, **kwargs) -> None``: given an
entity type and eid, promise for update given attributes and inlined
relations *with no guarantee that anything has been inserted in database*,
* ``prepare_insert_relation(eid_from, rtype, eid_to) -> None``: indicate that a
relation ``rtype`` should be added between entities with eids ``eid_from``
and ``eid_to``. Similarly to ``prepare_insert_entity()``, *there is no
guarantee that the relation will be inserted in database*,
* ``flush() -> None``: flush any temporary data to database. May be called
several times during an import,
* ``finish() -> None``: additional stuff to do after import is terminated.
**Warning:** ``prepare_update_entity()`` still needs to be implemented for
NoHookRQLObjectStore.
Related to #5040344
from logilab.common.testlib import unittest_main
from cubicweb.devtools.qunit import QUnitTestCase
from os import path as osp
JSTESTDIR = osp.abspath(osp.join(osp.dirname(__file__), 'data', 'js_examples'))
def js(name):
return osp.join(JSTESTDIR, name)
class QUnitTestCaseTC(QUnitTestCase):
all_js_tests = (
(js('test_simple_success.js'),),
(js('test_with_dep.js'), (js('dep_1.js'),)),
(js('test_with_ordered_deps.js'), (js('dep_1.js'), js('deps_2.js'),)),
)
def test_simple_failure(self):
js_tests = list(self._test_qunit(js('test_simple_failure.js')))
self.assertEqual(len(js_tests), 3)
test_1, test_2, test_3 = js_tests
self.assertRaises(self.failureException, test_1[0], *test_1[1:])
self.assertRaises(self.failureException, test_2[0], *test_2[1:])
test_3[0](*test_3[1:])
if __name__ == '__main__':
unittest_main()