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