aboutsummaryrefslogtreecommitdiff
path: root/test/scripts/apidocs/page.spec.ts
blob: bef6380614f87ea356544133e99e4435aefc93a1 (plain)
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import { describe, expect, it } from 'vitest';
import { toRefreshFunction } from '../../../scripts/apidocs/output/page';
import type { RawApiDocsMethod } from '../../../scripts/apidocs/processing/method';
import type { RawApiDocsSignature } from '../../../scripts/apidocs/processing/signature';

function newTestMethod(
  signature: Partial<RawApiDocsSignature>
): RawApiDocsMethod {
  return {
    name: 'test',
    signatures: [
      {
        deprecated: 'deprecated',
        description: 'description',
        remarks: [],
        since: 'since',
        parameters: [],
        returns: {
          type: 'simple',
          text: 'returns',
        },
        throws: [],
        signature: 'signature',
        examples: [],
        seeAlsos: [],
        ...signature,
      },
    ],
    source: {
      filePath: 'test/page.spec.ts',
      line: 1,
      column: 1,
    },
  };
}

describe('toRefreshFunction', () => {
  it("should return 'undefined' when there are no faker calls", async () => {
    // given
    const method = newTestMethod({
      examples: ['const a = 1;'],
    });

    // when
    const result = await toRefreshFunction(method);

    // then
    expect(result).toBe('undefined');
  });

  it('should handle single line calls with semicolon', async () => {
    // given
    const method = newTestMethod({
      examples: ['faker.number.int(); // 834135'],
    });

    // when
    const result = await toRefreshFunction(method);

    // then
    expect(result).toMatchSnapshot();
  });

  it('should handle single line calls without semicolon', async () => {
    // given
    const method = newTestMethod({
      examples: ['faker.number.int() // 834135'],
    });

    // when
    const result = await toRefreshFunction(method);

    // then
    expect(result).toMatchSnapshot();
  });

  it('should handle multiple calls', async () => {
    // given
    const method = newTestMethod({
      examples: ['faker.number.int()', 'faker.number.int()'],
    });

    // when
    const result = await toRefreshFunction(method);

    // then
    expect(result).toMatchSnapshot();
  });

  it('should handle multiline calls', async () => {
    // given
    const method = newTestMethod({
      examples: 'faker.number.int({\n  min: 1,\n  max: 10\n})'.split('\n'),
    });

    // when
    const result = await toRefreshFunction(method);

    // then
    expect(result).toMatchSnapshot();
  });

  it('should handle properties after calls', async () => {
    // given
    const method = newTestMethod({
      examples: ['faker.airline.airport().name'],
    });

    // when
    const result = await toRefreshFunction(method);

    // then
    expect(result).toMatchSnapshot();
  });
});