import DateTimeDateFormatConstraint from "../DateTimeDateFormatConstraint";

describe("dateTimeDateFormatConstraint", () => {
  it("dateTimeDateFormatConstraint checks for date", () => {
    const constraint = new DateTimeDateFormatConstraint(
      "dd-MM-yyyy",
      "dd-mm-jjjj",
    );

    expect(constraint.hasValidation()).toBe(true);

    expect(constraint.id).toBe("Constraint.DateFormat.InvalidFormat");

    expect(constraint.format).toBe("dd-MM-yyyy");

    expect(constraint.defaultMessage).toBe(
      "Date must be entered in the format ${format}",
    );
    expect(constraint.formatLabel).toBe("dd-mm-jjjj");

    expect(constraint.validate("19-01-2010")).toBe(true);
    expect(constraint.validate("19-01-2010 13:37")).toBe(false);
    expect(constraint.validate("2010-01-01 24:05")).toBe(false);
    expect(constraint.validate("2010-01-01")).toBe(false);

    expect(constraint.validate("19-01-21")).toBe(false);
    expect(constraint.validate("19-01-999")).toBe(false);
    expect(constraint.validate("19-01-10000")).toBe(false);
  });
});
