import UserProfileModel from "../UserProfileModel";

import data from "../__mock__/data.json";
import contributions from "../__mock__/contributions.json";

describe("userProfileModel", () => {
  it("is applicable for user data", () => {
    expect(
      UserProfileModel.isApplicableModel({
        contributions: { resourcetype: "userdata" },
      }),
    ).toBe(true);

    expect(
      UserProfileModel.isApplicableModel({
        contributions: { resourcetype: "application" },
      }),
    ).toBe(false);
  });

  it("should be able to create an empty UserModel object", () => {
    const user = new UserProfileModel({});

    expect(user).toBeInstanceOf(UserProfileModel);
    expect(user.type).toBe("UserProfile");
    expect(user.username).toBe("Guest");
    expect(user.fullname).toBe("Guest");
    expect(user.label).toBeUndefined();
    expect(user.attributeCollection.isEmpty).toBe(true);
  });

  it("holds user information", () => {
    const user = new UserProfileModel({
      data: data.userdata,
      contributions: contributions.userdata,
    });

    expect(user).toBeInstanceOf(UserProfileModel);
    expect(user.type).toBe("UserProfile");
    expect(user.username).toBe("auser");
    expect(user.fullname).toBe("A user");
    expect(user.label).toBe("User data");
    expect(user.attributeCollection.isEmpty).toBe(false);
  });
});
