• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pmcelhaney / counterfact / 8698410197

16 Apr 2024 01:14AM CUT coverage: 86.607% (+0.09%) from 86.517%
8698410197

push

github

web-flow
Merge pull request #852 from pmcelhaney/refactor-path-coder

Support OpenAPI reusable responses in global components object (handle $ref properly everywhere)

891 of 984 branches covered (90.55%)

Branch coverage included in aggregate %.

101 of 103 new or added lines in 8 files covered. (98.06%)

2 existing lines in 1 file now uncovered.

2879 of 3369 relevant lines covered (85.46%)

43.44 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.69
/src/typescript-generator/response-type-coder.js
1
import { printObject } from "./printers.js";
2✔
2
import { SchemaTypeCoder } from "./schema-type-coder.js";
2✔
3
import { TypeCoder } from "./type-coder.js";
2✔
4

2✔
5
export class ResponseTypeCoder extends TypeCoder {
2✔
6
  constructor(requirement, openApi2MediaTypes = []) {
2✔
7
    super(requirement);
104✔
8

104✔
9
    this.openApi2MediaTypes = openApi2MediaTypes;
104✔
10
  }
104✔
11

2✔
12
  names() {
2✔
NEW
13
    return super.names(this.requirement.data.$ref.split("/").at(-1));
×
UNCOV
14
  }
×
15

2✔
16
  buildContentObjectType(script, response) {
2✔
17
    if (response.has("content")) {
56✔
18
      return response.get("content").map((content, mediaType) => [
40✔
19
        mediaType,
60✔
20
        `{ 
60✔
21
            schema:  ${new SchemaTypeCoder(content.get("schema")).write(script)}
60✔
22
         }`,
60✔
23
      ]);
60✔
24
    }
40✔
25

16✔
26
    return this.openApi2MediaTypes.map((mediaType) => [
16✔
27
      mediaType,
16✔
28
      `{
16✔
29
            schema: ${new SchemaTypeCoder(response.get("schema")).write(script)}
16✔
30
         }`,
16✔
31
    ]);
16✔
32
  }
16✔
33

2✔
34
  printContentObjectType(script, response) {
2✔
35
    if (response.has("content") || response.has("schema")) {
102✔
36
      return printObject(this.buildContentObjectType(script, response));
56✔
37
    }
56✔
38

46✔
39
    return "never";
46✔
40
  }
46✔
41

2✔
42
  buildHeaders(script, response) {
2✔
43
    return response
2✔
44
      .get("headers")
2✔
45
      .map((value, name) => [
2✔
46
        name,
4✔
47
        `{ schema: ${new SchemaTypeCoder(value.get("schema") ?? value).write(
4!
48
          script,
4✔
49
        )}}`,
4✔
50
      ]);
4✔
51
  }
2✔
52

2✔
53
  printHeaders(script, response) {
2✔
54
    if (!response.has("headers")) {
102✔
55
      return "never";
100✔
56
    }
100✔
57

2✔
58
    return printObject(this.buildHeaders(script, response));
2✔
59
  }
2✔
60

2✔
61
  printRequiredHeaders(response) {
2✔
62
    const requiredHeaders = (response.get("headers") ?? [])
104✔
63
      .map((value, name) => ({ name, required: value.data.required }))
104✔
64
      .filter(({ required }) => required)
104✔
65
      .map(({ name }) => `"${name}"`);
104✔
66

104✔
67
    return requiredHeaders.length === 0 ? "never" : requiredHeaders.join(" | ");
104✔
68
  }
104✔
69

2✔
70
  modulePath() {
2✔
NEW
71
    return `components/${this.requirement.data.$ref.split("/").at(-1)}.ts`;
×
UNCOV
72
  }
×
73

2✔
74
  writeCode(script) {
2✔
75
    return `{
102✔
76
          headers: ${this.printHeaders(script, this.requirement)};
102✔
77
          requiredHeaders: ${this.printRequiredHeaders(this.requirement)};
102✔
78
          content: ${this.printContentObjectType(script, this.requirement)};
102✔
79
        }`;
102✔
80
  }
102✔
81
}
2✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc