import UserServicesModel from "../UserServicesModel";

describe("userServicesModel", () => {
  it("should be able to create an empty UserServicesModel object", () => {
    const userServices = new UserServicesModel({});

    expect(userServices).toBeInstanceOf(UserServicesModel);
    expect(userServices.user).toBeNull();
    expect(userServices.userLink).toBeNull();
    expect(userServices.label).toBe("");
    expect(userServices.changePassword).toBeNull();
    expect(userServices.isLoggedIn).toBe(false);
  });

  it("should be able to create an UserServicesModel object", () => {
    const userServices = new UserServicesModel({
      data: {
        _links: {
          self: {
            href: "/userLogin",
          },
          api_doc: {
            href: "/api-docs/v3/userLogin",
          },
          contributions: {
            href: "/contributions/userLogin",
          },
          component: [
            {
              href: "/userLogin/userdata",
              name: "Userdata",
            },
            {
              href: "/userLogin/changepassword",
              name: "ChangePassword",
            },
          ],
        },
      },
      contributions: {
        label: "Login",
        resourcetype: "user_services",
      },
    });

    expect(userServices).toBeInstanceOf(UserServicesModel);
    expect(userServices.user).toBeNull();
    expect(userServices.userLink.href.toString()).toBe("/userLogin/userdata");
    expect(userServices.label).toBe("Login");
    expect(userServices.changePassword.toString()).toBe(
      "/userLogin/changepassword",
    );
    expect(userServices.isLoggedIn).toBe(true);
  });
});
