import { getDurationInMinutes } from "..";

describe("getDurationInMinutes", () => {
  it("Translates number of seconds to string mm:ss", () => {
    const twoMinutesInSeconds = 120;
    const expectedResult = "02:00";
    const currentResult = getDurationInMinutes(twoMinutesInSeconds);
    expect(currentResult).toEqual(expectedResult);
  });

  it("adds leading 0 to value of minutes && seconds that are below zero", () => {
    const twoMinutesAndTwoSecondsInSeconds = 122;
    const expectedResult = "02:02";

    const currentResult = getDurationInMinutes(
      twoMinutesAndTwoSecondsInSeconds
    );

    expect(currentResult).toEqual(expectedResult);
  });

  it("is behaving correctly with edge 0", () => {
    const twoMinutesInSeconds = 0;
    const expectedResult = "00:00";
    const currentResult = getDurationInMinutes(twoMinutesInSeconds);
    expect(currentResult).toEqual(expectedResult);
  });

  it("Falls back to 00:00 for null and undefined values", () => {
    const expectedResult = "00:00";
    expect(getDurationInMinutes(null)).toEqual(expectedResult);
    expect(getDurationInMinutes(undefined)).toEqual(expectedResult);
  });

  it("adds leading 0 to value of minutes && seconds that are below zero and input is a string", () => {
    const twoMinutesAndTwoSecondsInSeconds = "122";
    const expectedResult = "02:02";

    const currentResult = getDurationInMinutes(
      twoMinutesAndTwoSecondsInSeconds
    );

    expect(currentResult).toEqual(expectedResult);
  });

  it("adds leading 0 to value of minutes && seconds that are below zero and input is not rounded", () => {
    const twoMinutesAndTwoSecondsInSeconds = 122.2342;
    const expectedResult = "02:02";

    const currentResult = getDurationInMinutes(
      twoMinutesAndTwoSecondsInSeconds
    );

    expect(currentResult).toEqual(expectedResult);
  });

  it("adds leading 0 to value of minutes && seconds that are below zero  is not rounded and a string", () => {
    const twoMinutesAndTwoSecondsInSeconds = "122.2342";
    const expectedResult = "02:02";

    const currentResult = getDurationInMinutes(
      twoMinutesAndTwoSecondsInSeconds
    );

    expect(currentResult).toEqual(expectedResult);
  });
});
