import { parseTimestamp } from "./time";
import moment from "moment";

const TIMESTAMP_INVALID_STRING = "2020-01-02T42:99:23.000Z";
const TIMESTAMP_VALID_STRING = "2020-01-02T12:34:56.000Z";

test("parseTimestamp() should fail parsing non-string timestamp", () => {
    // given
    const timestamp = {};

    // when
    const parsedTimestamp = parseTimestamp(timestamp);

    // then
    expect(parsedTimestamp).toEqual(null);
});

test("parseTimestamp() should fail parsing empty timestamp string", () => {
    // given
    const timestamp = "";

    // when
    const parsedTimestamp = parseTimestamp(timestamp);

    // then
    expect(parsedTimestamp).toEqual(null);
});

test("parseTimestamp() should fail parsing invalid timestamp string", () => {
    // given
    // noinspection UnnecessaryLocalVariableJS
    const timestamp = TIMESTAMP_INVALID_STRING;

    // when
    const parsedTimestamp = parseTimestamp(timestamp);

    // then
    expect(parsedTimestamp).toEqual(null);
});

test("parseTimestamp() should succeed parsing valid timestamp string", () => {
    // given
    const timestamp = TIMESTAMP_VALID_STRING;

    // when
    const parsedTimestamp = parseTimestamp(timestamp);

    // then
    if (parsedTimestamp === null) {
        fail("timestamp should not be null");
    }
    expect(moment.unix(parsedTimestamp).toISOString()).toEqual(timestamp);
});