const app = require('vn-loopback/server/server');

describe('loopback model Item', () => {
    describe('availableId()', () => {
        let nextItemId;
        beforeEach(async() => {
            let query = `SELECT i1.id + 1 as id FROM vn.item i1
            LEFT JOIN vn.item i2 ON i1.id + 1 = i2.id
            WHERE i2.id IS NULL ORDER BY i1.id LIMIT 1`;

            [nextAvailableId] = await app.models.Item.rawSql(query);
            nextItemId = nextAvailableId.id;
        });

        it('should return the next available id for an item', async() => {
            let context = {isNewInstance: true, instance: {}};
            let result = await app.models.Item.availableId(context);

            expect(result).toEqual(nextItemId);
        });
    });
});