/*
 This file is part of GNU Taler
 (C) 2022-2024 Taler Systems S.A.

 GNU Taler is free software; you can redistribute it and/or modify it under the
 terms of the GNU General Public License as published by the Free Software
 Foundation; either version 3, or (at your option) any later version.

 GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

 You should have received a copy of the GNU General Public License along with
 GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 */

/**
 *
 * @author Sebastian Javier Marchano (sebasjm)
 */

import {
  AbsoluteTime,
  AmountString,
  Duration,
  TranslatedString,
} from "@gnu-taler/taler-util";
import { InternationalizationAPI } from "@gnu-taler/web-util/browser";
import * as tests from "@gnu-taler/web-util/testing";
import { getEventsFromAmlHistory } from "./CaseDetails.js";
import { ShowConsolidated as TestedComponent } from "./ShowConsolidated.js";

export default {
  title: "show consolidated",
};

const nullTranslator: InternationalizationAPI = {
  str: (str: TemplateStringsArray) => str.join() as TranslatedString,
  singular: (str: TemplateStringsArray) => str.join() as TranslatedString,
  translate: (str: TemplateStringsArray) => [str.join()] as TranslatedString[],
  Translate: () => undefined as unknown,
};

export const WithEmptyHistory = tests.createExample(TestedComponent, {
  history: getEventsFromAmlHistory([], [], nullTranslator, []),
  until: AbsoluteTime.now(),
});

export const WithSomeEvents = tests.createExample(TestedComponent, {
  history: getEventsFromAmlHistory(
    [
      {
        decider_pub: "JD70N2XZ8FZKB7C146ZWR6XBDCS4Z84PJKJMPB73PMJ2B1X35ZFG",
        justification:
          '{"index":0,"name":"Simple comment","value":{"fullName":"loggedIn_user_fullname","when":{"t_ms":1700207199558},"state":1,"threshold":{"currency":"STATER","fraction":0,"value":0},"comment":"test"}}',
        new_threshold: "STATER:0" as AmountString,
        new_state: 1,
        decision_time: {
          t_s: 1700208199,
        },
      },
      {
        decider_pub: "JD70N2XZ8FZKB7C146ZWR6XBDCS4Z84PJKJMPB73PMJ2B1X35ZFG",
        justification:
          '{"index":0,"name":"Simple comment","value":{"fullName":"loggedIn_user_fullname","when":{"t_ms":1700207199558},"state":1,"threshold":{"currency":"STATER","fraction":0,"value":0},"comment":"test"}}',
        new_threshold: "STATER:0" as AmountString,
        new_state: 1,
        decision_time: {
          t_s: 1700208211,
        },
      },
      {
        decider_pub: "JD70N2XZ8FZKB7C146ZWR6XBDCS4Z84PJKJMPB73PMJ2B1X35ZFG",
        justification:
          '{"index":0,"name":"Simple comment","value":{"fullName":"loggedIn_user_fullname","when":{"t_ms":1700207199558},"state":1,"threshold":{"currency":"STATER","fraction":0,"value":0},"comment":"test"}}',
        new_threshold: "STATER:0" as AmountString,
        new_state: 1,
        decision_time: {
          t_s: 1700208220,
        },
      },
      {
        decider_pub: "JD70N2XZ8FZKB7C146ZWR6XBDCS4Z84PJKJMPB73PMJ2B1X35ZFG",
        justification:
          '{"index":4,"name":"Declaration for trusts (902.13e)","value":{"fullName":"loggedIn_user_fullname","when":{"t_ms":1700208362854},"state":1,"threshold":{"currency":"STATER","fraction":0,"value":0},"contractingPartner":"f","knownAs":"a","trust":{"name":"b","type":"discretionary","revocability":"irrevocable"}}}',
        new_threshold: "STATER:0" as AmountString,
        new_state: 1,
        decision_time: {
          t_s: 1700208385,
        },
      },
      {
        decider_pub: "6CD3J8XSKWQPFFDJY4SP4RK2D7T7WW7JRJDTXHNZY7YKGXDCE2QG",
        justification:
          '{"id":"simple_comment","label":"Simple comment","version":1,"value":{"when":{"t_ms":1700488420810},"state":1,"threshold":{"currency":"STATER","fraction":0,"value":0},"comment":"qwe"}}',
        new_threshold: "STATER:0" as AmountString,
        new_state: 1,
        decision_time: {
          t_s: 1700488423,
        },
      },
      {
        decider_pub: "6CD3J8XSKWQPFFDJY4SP4RK2D7T7WW7JRJDTXHNZY7YKGXDCE2QG",
        justification:
          '{"id":"simple_comment","label":"Simple comment","version":1,"value":{"when":{"t_ms":1700488671251},"state":1,"threshold":{"currency":"STATER","fraction":0,"value":0},"comment":"asd asd asd "}}',
        new_threshold: "STATER:0" as AmountString,
        new_state: 1,
        decision_time: {
          t_s: 1700488677,
        },
      },
    ],
    [
      {
        collection_time: AbsoluteTime.toProtocolTimestamp(
          AbsoluteTime.subtractDuraction(
            AbsoluteTime.now(),
            Duration.fromPrettyString("1d"),
          ),
        ),
        expiration_time: { t_s: "never" },
        provider_section: "asd",
        attributes: {
          email: "sebasjm@qwdde.com",
        },
      },
    ],
    nullTranslator,
    [],
  ),
  until: AbsoluteTime.now(),
});
