keap-client
Version:
A client to work with Infusionsoft/Keap API.
79 lines (65 loc) • 2.27 kB
text/typescript
import { Api } from "../../src/utils/api";
import { Users } from "../../src/models/User";
jest.mock("../../src/utils/api");
describe("Users", () => {
let api: Api;
let users: Users;
let mockUser: IUser;
let mockUserCreateRequest: UserCreateRequest;
beforeEach(() => {
api = new Api("valid-api-key");
users = new Users(api);
mockUser = {
id: 1,
company_name: "Test Company",
given_name: "John",
family_name: "Doe",
email_address: "8tE0I@example.com",
partner: true,
};
mockUserCreateRequest = {
partner: true,
email: "8tE0I@example.com",
given_name: "John",
};
});
it("should create a new Users instance", () => {
expect(users).toBeInstanceOf(Users);
});
describe("listUsers", () => {
it("should call api.get with correct parameters", async () => {
const mockResponse = {
users: [mockUser],
count: 1,
next: "http://example.com/next",
previous: "http://example.com/previous",
};
(api.get as jest.Mock).mockResolvedValue(mockResponse);
const options = { include_inactive: true, limit: 10, offset: 0 };
const result = await users.listUsers(options);
expect(api.get).toHaveBeenCalledWith(
"v1/users?include_inactive=true&limit=10&offset=0"
);
expect(result?.getItems()).toBe(mockResponse.users);
expect(result?.getCount()).toBe(mockResponse.count);
});
it("should throw an error if api.get fails", async () => {
(api.get as jest.Mock).mockRejectedValue(new Error("API Error"));
await expect(users.listUsers()).rejects.toThrow("API Error");
});
});
describe("createUser", () => {
it("should call api.post with correct parameters", async () => {
(api.post as jest.Mock).mockResolvedValue(mockUser);
const result = await users.createUser(mockUserCreateRequest);
expect(api.post).toHaveBeenCalledWith("v1/users", mockUserCreateRequest);
expect(result).toBe(mockUser);
});
it("should throw an error if api.post fails", async () => {
(api.post as jest.Mock).mockRejectedValue(new Error("API Error"));
await expect(users.createUser(mockUserCreateRequest)).rejects.toThrow(
"API Error"
);
});
});
});