53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
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)
|
|
})
|
|
})
|