Login_test.res.mjs

  1// Generated by ReScript, PLEASE EDIT WITH CARE
  2
  3import * as Login from "../src/ui/Login.res.mjs";
  4import * as Vitest from "vitest";
  5
  6Vitest.describe("validateLoginForm", () => {
  7  Vitest.test("Valid when both user and password provided", t => {
  8    let result = Login.validateLoginForm("alice", "secret");
  9    t.expect(result).toEqual("Valid");
 10  });
 11  Vitest.test("Invalid when user missing", t => {
 12    let result = Login.validateLoginForm(undefined, "secret");
 13    t.expect(result).toEqual({
 14      TAG: "Invalid",
 15      _0: "Username or handle is required"
 16    });
 17  });
 18  Vitest.test("Invalid when password missing", t => {
 19    let result = Login.validateLoginForm("alice", undefined);
 20    t.expect(result).toEqual({
 21      TAG: "Invalid",
 22      _0: "Password is required"
 23    });
 24  });
 25  Vitest.test("Invalid when both missing", t => {
 26    let result = Login.validateLoginForm(undefined, undefined);
 27    t.expect(result).toEqual({
 28      TAG: "Invalid",
 29      _0: "Username and password are required"
 30    });
 31  });
 32});
 33
 34Vitest.describe("validateSignupForm", () => {
 35  Vitest.test("Valid when email and password provided", t => {
 36    let result = Login.validateSignupForm("[email protected]", undefined, "secret");
 37    t.expect(result).toEqual("Valid");
 38  });
 39  Vitest.test("Valid when handle and password provided", t => {
 40    let result = Login.validateSignupForm(undefined, "alice", "secret");
 41    t.expect(result).toEqual("Valid");
 42  });
 43  Vitest.test("Valid when all three provided", t => {
 44    let result = Login.validateSignupForm("[email protected]", "alice", "secret");
 45    t.expect(result).toEqual("Valid");
 46  });
 47  Vitest.test("Invalid when neither email nor handle provided", t => {
 48    let result = Login.validateSignupForm(undefined, undefined, "secret");
 49    t.expect(result).toEqual({
 50      TAG: "Invalid",
 51      _0: "A handle or an email and a password are required"
 52    });
 53  });
 54  Vitest.test("Invalid when password missing", t => {
 55    let result = Login.validateSignupForm("[email protected]", undefined, undefined);
 56    t.expect(result).toEqual({
 57      TAG: "Invalid",
 58      _0: "A handle or an email and a password are required"
 59    });
 60  });
 61});
 62
 63Vitest.describe("parseUserFromJSON", () => {
 64  Vitest.test("Parses complete user JSON with base36 id", t => {
 65    let json = Object.fromEntries([
 66      [
 67        "id",
 68        "zvozorhhxc0"
 69      ],
 70      [
 71        "email",
 72        "[email protected]"
 73      ],
 74      [
 75        "handle",
 76        "alice"
 77      ],
 78      [
 79        "registered",
 80        true
 81      ]
 82    ]);
 83    let result = Login.parseUserFromJSON(json);
 84    t.expect(result).toEqual({
 85      id: "zvozorhhxc0",
 86      email: "[email protected]",
 87      handle: "alice",
 88      registered: true
 89    });
 90  });
 91  Vitest.test("Ignores numeric id and returns None", t => {
 92    let json = Object.fromEntries([
 93      [
 94        "id",
 95        42.0
 96      ],
 97      [
 98        "email",
 99        "[email protected]"
100      ],
101      [
102        "handle",
103        "alice"
104      ],
105      [
106        "registered",
107        false
108      ]
109    ]);
110    let result = Login.parseUserFromJSON(json);
111    t.expect(result).toEqual(undefined);
112  });
113  Vitest.test("Returns None for missing id", t => {
114    let json = Object.fromEntries([
115      [
116        "email",
117        "[email protected]"
118      ],
119      [
120        "handle",
121        "alice"
122      ],
123      [
124        "registered",
125        true
126      ]
127    ]);
128    let result = Login.parseUserFromJSON(json);
129    t.expect(result).toEqual(undefined);
130  });
131  Vitest.test("Defaults optional fields", t => {
132    let json = Object.fromEntries([[
133        "id",
134        "abc123"
135      ]]);
136    let result = Login.parseUserFromJSON(json);
137    t.expect(result).toEqual({
138      id: "abc123",
139      email: "",
140      handle: "",
141      registered: false
142    });
143  });
144});
145
146/*  Not a pure module */