import { expect, test, describe, vi, beforeEach} from "vitest";

import { createStore } from 'vuex'
import {store as users} from "@/store/modules/users"
import axios from "axios";

vi.mock('axios')

describe("tests services store with vuex", () => {
  const store = createStore({
    plugins: [],
    modules: {
      users
    },
  })

  beforeEach(() => {
    store.dispatch('users/resetStore')
  })

  test('test fetchUsersList function', async () => {
    const mockData = [
      {
        "id": 1,
        "first_name": "Leanne",
        "last_name": "Graham",
        "email": "test@mail.ru",
        "role": "admin",
        "is_active": true
      }
    ]

    axios.get.mockResolvedValue({
      data: mockData,
    })

    const expectedData = [
      {
        "id": 1,
        "first_name": "Leanne",
        "last_name": "Graham",
        "email": "test@mail.ru",
        "role": "admin",
        "is_active": true
      }
    ]

    await store.dispatch('users/fetchUsersList', {siteId: 1, mode: "prod"})
    const sites = store.getters['users/usersList']

    expect(sites).toEqual(expectedData)
  })

})


