Skip to content

Commit c347ecc

Browse files
Merge branch 'main' into singleton-check-fix
2 parents 7e45f71 + c8d48ad commit c347ecc

8 files changed

+552
-1
lines changed

eslint.config.mjs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ export default [
2525
ecmaVersion: 2022,
2626
sourceType: 'module',
2727
},
28+
rules: {
29+
'no-extra-boolean-cast': [
30+
'warn',
31+
{
32+
enforceForLogicalOperands: true,
33+
},
34+
],
35+
},
2836
},
2937
{
3038
ignores: ['node-modules'],
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
import testRule from './__helpers__/testRule';
2+
import { DiagnosticSeverity } from '@stoplight/types';
3+
4+
const parameters = {
5+
parameters: {
6+
includeCount: {
7+
name: 'includeCount',
8+
in: 'query',
9+
schema: {
10+
type: 'boolean',
11+
default: true,
12+
},
13+
},
14+
itemsPerPage: {
15+
name: 'itemsPerPage',
16+
in: 'query',
17+
schema: {
18+
type: 'integer',
19+
default: 100,
20+
},
21+
},
22+
},
23+
};
24+
25+
testRule('xgen-IPA-110-collections-request-includeCount-not-required', [
26+
{
27+
name: 'valid',
28+
document: {
29+
paths: {
30+
'/resources': {
31+
get: {
32+
parameters: [
33+
{
34+
name: 'includeCount',
35+
in: 'query',
36+
schema: {
37+
type: 'boolean',
38+
},
39+
},
40+
],
41+
},
42+
},
43+
'resources/{resourceId}': {
44+
get: {},
45+
},
46+
'/resourcesTwo': {
47+
get: {
48+
parameters: [
49+
{
50+
$ref: '#/components/parameters/includeCount',
51+
},
52+
],
53+
},
54+
},
55+
'resourcesTwo/{resourceId}': {
56+
get: {},
57+
},
58+
},
59+
components: parameters,
60+
},
61+
errors: [],
62+
},
63+
{
64+
name: 'valid - includeCount not present',
65+
document: {
66+
paths: {
67+
'/resources': {
68+
get: {
69+
parameters: [
70+
{
71+
$ref: '#/components/parameters/itemsPerPage',
72+
},
73+
],
74+
},
75+
},
76+
'resources/{resourceId}': {
77+
get: {},
78+
},
79+
},
80+
components: parameters,
81+
},
82+
errors: [],
83+
},
84+
{
85+
name: 'valid - no parameters at all',
86+
document: {
87+
paths: {
88+
'/resources': {
89+
get: {},
90+
},
91+
'resources/{resourceId}': {
92+
get: {},
93+
},
94+
},
95+
},
96+
errors: [],
97+
},
98+
{
99+
name: 'invalid - includeCount is required',
100+
document: {
101+
paths: {
102+
'/resources': {
103+
get: {
104+
parameters: [
105+
{
106+
name: 'includeCount',
107+
in: 'query',
108+
required: true,
109+
schema: {
110+
type: 'boolean',
111+
},
112+
},
113+
],
114+
},
115+
},
116+
},
117+
},
118+
errors: [
119+
{
120+
code: 'xgen-IPA-110-collections-request-includeCount-not-required',
121+
message: 'includeCount query parameter of List method must not be required.',
122+
path: ['paths', '/resources', 'get'],
123+
severity: DiagnosticSeverity.Warning,
124+
},
125+
],
126+
},
127+
{
128+
name: 'invalid - referenced includeCount is required',
129+
document: {
130+
paths: {
131+
'/resources': {
132+
get: {
133+
parameters: [
134+
{
135+
$ref: '#/components/parameters/RequiredIncludeCount',
136+
},
137+
],
138+
},
139+
},
140+
},
141+
components: {
142+
parameters: {
143+
RequiredIncludeCount: {
144+
name: 'includeCount',
145+
in: 'query',
146+
required: true,
147+
schema: {
148+
type: 'boolean',
149+
},
150+
},
151+
},
152+
},
153+
},
154+
errors: [
155+
{
156+
code: 'xgen-IPA-110-collections-request-includeCount-not-required',
157+
message: 'includeCount query parameter of List method must not be required.',
158+
path: ['paths', '/resources', 'get'],
159+
severity: DiagnosticSeverity.Warning,
160+
},
161+
],
162+
},
163+
{
164+
name: 'valid - handles exception',
165+
document: {
166+
paths: {
167+
'/resources': {
168+
get: {
169+
parameters: [
170+
{
171+
name: 'includeCount',
172+
in: 'query',
173+
required: true,
174+
schema: {
175+
type: 'boolean',
176+
},
177+
},
178+
],
179+
'x-xgen-IPA-exception': {
180+
'xgen-IPA-110-collections-request-includeCount-not-required': 'Reason',
181+
},
182+
},
183+
},
184+
},
185+
},
186+
errors: [],
187+
},
188+
]);

0 commit comments

Comments
 (0)