const app = require(`${loopbackApp}`);
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;

describe('last_buy_refresh()', () => {
    it(`should store some data on cache.last_buy`, async() => {
        let stmts = [];
        let stmt;

        stmts.push('START TRANSACTION');

        stmt = new ParameterizedSQL('CALL cache.last_buy_refresh(true)');
        stmts.push(stmt);

        let lastBuyTableIndex = stmts.push(`SELECT * FROM cache.last_buy ORDER BY item_id ASC`) - 1;

        stmts.push('ROLLBACK');

        let sql = ParameterizedSQL.join(stmts, ';');
        let result = await app.models.Ticket.rawStmt(sql);

        let lastBuyTable = result[lastBuyTableIndex];

        expect(lastBuyTable.length).toEqual(12);

        expect(lastBuyTable[0].item_id).toEqual(1);
        expect(lastBuyTable[1].item_id).toEqual(1);
        expect(lastBuyTable[2].item_id).toEqual(1);
        expect(lastBuyTable[3].item_id).toEqual(2);
        expect(lastBuyTable[4].item_id).toEqual(2);
        expect(lastBuyTable[5].item_id).toEqual(3);

        expect(lastBuyTable[0].warehouse_id).toEqual(1);
        expect(lastBuyTable[1].warehouse_id).toEqual(3);
        expect(lastBuyTable[2].warehouse_id).toEqual(5);
        expect(lastBuyTable[3].warehouse_id).toEqual(1);
        expect(lastBuyTable[4].warehouse_id).toEqual(5);
        expect(lastBuyTable[5].warehouse_id).toEqual(1);

        expect(lastBuyTable[1].buy_id).toEqual(10);
        expect(lastBuyTable[0].buy_id).toEqual(3);
        expect(lastBuyTable[2].buy_id).toEqual(13);
        expect(lastBuyTable[3].buy_id).toEqual(4);
        expect(lastBuyTable[4].buy_id).toEqual(14);
        expect(lastBuyTable[5].buy_id).toEqual(5);
    });
});