import ModularUIResponse from "../../../modularui/ModularUIResponse";
import FormModel from "../FormModel";

describe("formModel with result data", () => {
  it("should be able to create a FormModel with result data", () => {
    const data = ModularUIResponse.create({
      data: {
        formresponse: {
          _links: {
            self: { href: "/rebuild-db/database-actions/rebuild-db-server" },
            api_doc: {
              href: "/api-docs/v3/rebuild-db/database-actions/rebuild-db-server",
            },
            contributions: {
              href: "/contributions/rebuild-db/database-actions/rebuild-db-server",
            },
          },
          success: { redirect: "/", data: { out: { money: 10 } } },
        },
      },
      contributions: {
        RebuildDBServer: {
          label: "Rebuild DB server",
          resourcetype: "Form",
          actiontype: "form",
          objects: {
            AttributeSet: {
              dynamicObject: false,
              repeatable: false,
              dynamicValidations: false,
              label: "Rebuild DB",
              mandatory: false,
              attributes: [
                {
                  Dummy: {
                    type: "string",
                    label: "Dummy (not visible)",
                    mandatory: false,
                    readonly: true,
                    layouthint: ["label"],
                  },
                },
              ],
            },
          },
          resultdata: {
            out: {
              repeatable: false,
              label: "Result data",
              introText: {
                id: "out.Introtext",
                message: "<p>uit</p>",
              },
              attributes: [
                {
                  money: {
                    type: "number",
                    label: "Money",
                    mandatory: false,
                    decimalSeparator: ",",
                    layouthint: ["money"],
                    format: "#,##0.00",
                    groupingSeparator: ".",
                    currencySymbol: "€",
                  },
                },
              ],
            },
          },
        },
      },
    });

    const form = new FormModel(data);

    const resultData = form.getResultData();
    expect(resultData.out.key).toBe("out");
    expect(resultData.out.label).toBe("Result data");
    expect(resultData.out.attributeCollection.size).toBe(1);
    expect(resultData.out.attributeCollection.first.label).toBe("Money");
    expect(resultData.out.attributeCollection.first.readonlyvalue).toBe(
      "10,00",
    );
    expect(resultData.out.attributeCollection.first.currencySymbol).toBe("€");
  });
});
