Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
it('should not use transaction with another repository', async () => {
const ds2Options = Object.assign({}, dataSourceOptions);
ds2Options.name = 'anotherDataSource';
ds2Options.database = ds2Options.database + '_new';
const ds2 = new juggler.DataSource(ds2Options);
const anotherRepo = new repositoryClass(Product, ds2);
await ds2.automigrate(Product.name);
tx = await repo.beginTransaction(IsolationLevel.READ_COMMITTED);
// we should reject this call with a clear error message
// stating that transaction doesn't belong to the repository
// and that only local transactions are supported
// expect(
// await anotherRepo.create({name: 'Pencil'}, {transaction: tx}),
// ).to.throw(/some error/);
// see https://github.com/strongloop/loopback-next/issues/3483
const created = await anotherRepo.create(
{name: 'Pencil'},
{transaction: tx},
);
expect(created.toObject()).to.have.properties('id', 'name');
expect(created.id).to.be.ok();
// for now, LB ignores the transaction so the instance
it('retrieves model instance once transaction is committed', async () => {
tx = await repo.beginTransaction(IsolationLevel.READ_COMMITTED);
const created = await repo.create(
{name: 'Pencil'},
{transaction: tx},
);
expect(created.toObject()).to.have.properties('id', 'name');
expect(created.id).to.be.ok();
await tx.commit();
const foundOutsideTransaction = await repo.findById(created.id, {});
expect(toJSON(created)).to.deepEqual(toJSON(foundOutsideTransaction));
});