import {describe, test, expect, vi} from 'vitest'
import ApiOfPacks from "@api/ApiOfPacks.js"
import { defaultLastPacks, defaultFreePacks, defaultParams, freePacksParams } from '@mocks/packs'
import axios from 'axios'

vi.mock('axios')

describe('ApiOfPacks', () => {

  test('ApiOfPacks should be a object', () => {
    const apiOfPacks = new ApiOfPacks('')
    expect(typeof apiOfPacks).toBe('object')
  })

  test('Get last packs', async () => {

    axios.post.mockResolvedValue({data: defaultLastPacks})
    const params = [defaultParams.imei, defaultParams.dtStart, defaultParams.dtFinish]

    const apiOfPacks = new ApiOfPacks('http://localhost:5444')
    const storePacks = await apiOfPacks.fetchLastPacks(params)

    expect(storePacks.length).toBeGreaterThan(0)
    expect(storePacks.length).toBe(6)
    expect(storePacks[0].pack_number).toBe(1)
    expect(storePacks).toEqual(defaultLastPacks)
  })

  test('Get free packs', async () => {

    axios.post.mockResolvedValue({data: defaultFreePacks})
    const params = [freePacksParams[0]]

    const apiOfPacks = new ApiOfPacks('http://localhost:5444')
    const storeFreePacks = await apiOfPacks.fetchFreePacks(params)

    expect(storeFreePacks.logs.length).toBeGreaterThan(0)
    expect(storeFreePacks.logs.length).toBe(2)
    expect(storeFreePacks.maxDataLength).toEqual(defaultFreePacks.maxDataLength)
    expect(storeFreePacks).toEqual(defaultFreePacks)
  })

})