@@ -234,6 +234,8 @@ private void initializeWriterIfNeeded() {
234
234
writer .addDependency (TypeScriptDependency .PROTOCOL_HTTP );
235
235
// Add the template to each generated test.
236
236
writer .write (IoUtils .readUtf8Resource (getClass (), "protocol-test-stub.ts" ));
237
+ writer .addImport ("test" , "it" , TypeScriptDependency .VITEST );
238
+ writer .addImport ("expect" , null , TypeScriptDependency .VITEST );
237
239
}
238
240
}
239
241
@@ -466,7 +468,6 @@ private void writeHttpResponseAssertions(HttpMalformedResponseDefinition respons
466
468
writer .write ("expect(r.statusCode).toBe($L);" , responseDefinition .getCode ());
467
469
responseDefinition .getHeaders ().forEach ((header , value ) -> {
468
470
header = header .toLowerCase ();
469
- writer .write ("expect(r.headers[$S]).toBeDefined();" , header );
470
471
writer .write ("expect(r.headers[$S]).toBe($S);" , header , value );
471
472
});
472
473
writer .write ("" );
@@ -484,11 +485,20 @@ private void writeHttpResponseAssertions(HttpMalformedResponseDefinition respons
484
485
485
486
private void writeHttpQueryAssertions (HttpRequestTestCase testCase ) {
486
487
testCase .getRequireQueryParams ().forEach (requiredQueryParam ->
487
- writer .write ("expect(r.query[$S]).toBeDefined();" , requiredQueryParam ));
488
+ writer .write ("""
489
+ expect(
490
+ r.query[$1S],
491
+ `Query key $1S should have been defined in $${JSON.stringify(r.query)}`
492
+ ).toBeDefined();""" , requiredQueryParam )
493
+ );
488
494
writer .write ("" );
489
495
490
496
testCase .getForbidQueryParams ().forEach (forbidQueryParam ->
491
- writer .write ("expect(r.query[$S]).toBeUndefined();" , forbidQueryParam ));
497
+ writer .write ("""
498
+ expect(
499
+ r.query[$1S],
500
+ `Query key $1S should have been undefined in $${JSON.stringify(r.query)}`
501
+ ).toBeUndefined();""" , forbidQueryParam ));
492
502
writer .write ("" );
493
503
494
504
List <String > explicitQueryValues = testCase .getQueryParams ();
@@ -506,25 +516,31 @@ private void writeHttpQueryAssertions(HttpRequestTestCase testCase) {
506
516
507
517
private void writeHttpHeaderAssertions (HttpMessageTestCase testCase ) {
508
518
testCase .getRequireHeaders ().forEach (requiredHeader -> {
509
- writer .write ("expect(r.headers[$S]).toBeDefined();" , requiredHeader .toLowerCase ());
519
+ writer .write ("""
520
+ expect(
521
+ r.headers[$1S],
522
+ `Header key $1S should have been defined in $${JSON.stringify(r.headers)}`
523
+ ).toBeDefined();""" , requiredHeader .toLowerCase ());
510
524
});
511
525
writer .write ("" );
512
526
513
527
testCase .getForbidHeaders ().forEach (forbidHeader ->
514
- writer .write ("expect(r.headers[$S]).toBeUndefined();" , forbidHeader .toLowerCase ()));
528
+ writer .write ("""
529
+ expect(
530
+ r.headers[$1S],
531
+ `Header key $1S should have been undefined in $${JSON.stringify(r.headers)}`
532
+ ).toBeUndefined();""" , forbidHeader .toLowerCase ()));
515
533
writer .write ("" );
516
534
517
535
testCase .getHeaders ().forEach ((header , value ) -> {
518
536
header = header .toLowerCase ();
519
- writer .write ("expect(r.headers[$S]).toBeDefined();" , header );
520
537
writer .write ("expect(r.headers[$S]).toBe($S);" , header , value );
521
538
});
522
539
writer .write ("" );
523
540
}
524
541
525
542
private void writeHttpHostAssertion (HttpRequestTestCase testCase ) {
526
543
testCase .getResolvedHost ().ifPresent (resolvedHost -> {
527
- writer .write ("expect(r.headers[\" host\" ]).toBeDefined();" );
528
544
writer .write ("expect(r.headers[\" host\" ]).toBe($S);" , resolvedHost );
529
545
writer .write ("" );
530
546
});
@@ -540,7 +556,7 @@ private void writeHttpBodyAssertions(String body, String mediaType, boolean isCl
540
556
}
541
557
542
558
// Fast fail if we don't have a body.
543
- writer .write ("expect(r.body).toBeDefined();" );
559
+ writer .write ("expect(r.body, `Body was undefined.` ).toBeDefined();" );
544
560
545
561
// Otherwise load a media type specific comparator and do a comparison.
546
562
String comparatorInvoke = registerBodyComparatorStub (mediaType );
@@ -566,7 +582,7 @@ private void writeHttpBodyAssertions(String body, String mediaType, boolean isCl
566
582
567
583
private void writeHttpBodyMessageAssertion (String messageRegex , String mediaType ) {
568
584
// Fast fail if we don't have a body.
569
- writer .write ("expect(r.body).toBeDefined();" );
585
+ writer .write ("expect(r.body, `Body was undefined` ).toBeDefined();" );
570
586
571
587
// Otherwise load a media type specific matcher
572
588
String comparatorInvoke = registerMessageRegexStub (mediaType );
@@ -825,7 +841,7 @@ private void writeResponseTestSetup(OperationShape operation, HttpResponseTestCa
825
841
private void writeResponseAssertions (Shape operationOrError , HttpResponseTestCase testCase ) {
826
842
writer .write ("expect(r['$$metadata'].httpStatusCode).toBe($L);" , testCase .getCode ());
827
843
828
- writeReponseParamAssertions (operationOrError , testCase );
844
+ writeResponseParamAssertions (operationOrError , testCase );
829
845
}
830
846
831
847
private void writeRequestParamAssertions (OperationShape operation , HttpRequestTestCase testCase ) {
@@ -859,7 +875,7 @@ private void writeRequestParamAssertions(OperationShape operation, HttpRequestTe
859
875
}
860
876
}
861
877
862
- private void writeReponseParamAssertions (Shape operationOrError , HttpResponseTestCase testCase ) {
878
+ private void writeResponseParamAssertions (Shape operationOrError , HttpResponseTestCase testCase ) {
863
879
ObjectNode params = testCase .getParams ();
864
880
if (!params .isEmpty ()) {
865
881
StructureShape testOutputShape ;
@@ -917,7 +933,11 @@ private void writeParamAssertions(
917
933
918
934
// Perform parameter comparisons.
919
935
writer .openBlock ("Object.keys(paramsToValidate).forEach(param => {" , "});" , () -> {
920
- writer .write ("expect(r[param]).toBeDefined();" );
936
+ writer .write ("""
937
+ expect(
938
+ r[param],
939
+ `The output field $${param} should have been defined in $${JSON.stringify(r, null, 2)}`
940
+ ).toBeDefined();""" );
921
941
if (hasStreamingPayloadBlob ) {
922
942
writer .openBlock ("if (param === $S) {" , "} else {" , payloadBinding .get ().getMemberName (), () ->
923
943
writer .write ("""
0 commit comments