const _ = require("lodash/fp") const { structures } = require("../../../tests") jest.mock("../../../src/context") jest.mock("../../../src/db") const context = require("../../../src/context") const db = require("../../../src/db") const { getCreatorCount } = require("../../../src/users/users") describe("Users", () => { let getGlobalDBMock let getGlobalUserParamsMock let paginationMock beforeEach(() => { jest.resetAllMocks() getGlobalDBMock = jest.spyOn(context, "getGlobalDB") getGlobalUserParamsMock = jest.spyOn(db, "getGlobalUserParams") paginationMock = jest.spyOn(db, "pagination") }) it("Retrieves the number of creators", async () => { const getUsers = (offset, limit, creators = false) => { const range = _.range(offset, limit) const opts = creators ? { builder: { global: true } } : undefined return range.map(() => structures.users.user(opts)) } const page1Data = getUsers(0, 8) const page2Data = getUsers(8, 12, true) getGlobalDBMock.mockImplementation(() => ({ name: "fake-db", allDocs: () => ({ rows: [...page1Data, ...page2Data], }), })) paginationMock.mockImplementationOnce(() => ({ data: page1Data, hasNextPage: true, nextPage: "1", })) paginationMock.mockImplementation(() => ({ data: page2Data, hasNextPage: false, nextPage: undefined, })) const creatorsCount = await getCreatorCount() expect(creatorsCount).toBe(4) expect(paginationMock).toHaveBeenCalledTimes(2) }) })