File size: 1,901 Bytes
3201ca6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import { describe, it, expect } from "vitest";
import { I18nKey } from "#/i18n/declaration";
import { validateAutomationTimeout } from "#/utils/automation-timeout";

describe("validateAutomationTimeout", () => {
  it("treats a blank value as 'use the server default'", () => {
    // Arrange / Act
    const result = validateAutomationTimeout("   ");

    // Assert
    expect(result).toEqual({ value: null });
  });

  it("accepts a positive integer up to a deployment-provided maximum", () => {
    // Arrange / Act
    const result = validateAutomationTimeout("900", 900);

    // Assert
    expect(result).toEqual({ value: 900 });
  });

  it("rejects a non-integer value", () => {
    // Arrange / Act
    const result = validateAutomationTimeout("12.5");

    // Assert
    expect(result).toEqual({
      errorKey: I18nKey.AUTOMATIONS$ERROR_TIMEOUT_INVALID_NUMBER,
    });
  });

  it("rejects a non-positive value", () => {
    // Arrange / Act
    const result = validateAutomationTimeout("0");

    // Assert
    expect(result).toEqual({
      errorKey: I18nKey.AUTOMATIONS$ERROR_TIMEOUT_POSITIVE,
    });
  });

  it("rejects a value above the maximum", () => {
    // Arrange / Act
    const result = validateAutomationTimeout("901", 900);

    // Assert
    expect(result).toEqual({
      errorKey: I18nKey.AUTOMATIONS$ERROR_TIMEOUT_MAX_EXCEEDED,
    });
  });

  it("validates against a ceiling the interface manifest lowered", () => {
    // Arrange / Act — a manifest max of 900 moves the boundary: 900 stays
    // in range while 901, fine under the 1800 default, is now rejected.
    const atCeiling = validateAutomationTimeout("900", 900);
    const overCeiling = validateAutomationTimeout("901", 900);

    // Assert
    expect(atCeiling).toEqual({ value: 900 });
    expect(overCeiling).toEqual({
      errorKey: I18nKey.AUTOMATIONS$ERROR_TIMEOUT_MAX_EXCEEDED,
    });
  });
});