Skip to content

Commit 69505a9

Browse files
committed
fix: minor typing changes, add more expect chain tests
1 parent 459004a commit 69505a9

File tree

14 files changed

+1030
-260
lines changed

14 files changed

+1030
-260
lines changed

source/assert/assert.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
class Assert<TSubject> {
99
public readonly subject: TSubject;
1010

11-
public constructor (subject: TSubject) {
11+
public constructor(subject: TSubject) {
1212
this.subject = subject;
1313
}
1414

@@ -144,8 +144,7 @@ class Assert<TSubject> {
144144
const isTypeOfResult = this.isTypeOf('boolean');
145145

146146
if (!isTypeOfResult.result) {
147-
// @ts-expect-error
148-
return isTypeOfResult;
147+
return <AssertionResult<unknown, unknown, true>>isTypeOfResult;
149148
}
150149

151150
// eslint-disable-next-line @typescript-eslint/naming-convention
@@ -161,8 +160,7 @@ class Assert<TSubject> {
161160
const isTypeOfResult = this.isTypeOf('boolean');
162161

163162
if (!isTypeOfResult.result) {
164-
// @ts-expect-error
165-
return isTypeOfResult;
163+
return <AssertionResult<unknown, unknown, false>>isTypeOfResult;
166164
}
167165

168166
// eslint-disable-next-line @typescript-eslint/naming-convention
@@ -205,7 +203,9 @@ class Assert<TSubject> {
205203
return this.custom(this.subject, undefined, this.subject === undefined, 'Expected %subject% to %reverse=not %be undefined.', reverse);
206204
}
207205

206+
// eslint-disable-next-line @typescript-eslint/ban-types
208207
public isIn<TExpected extends object>(expected: TExpected): AssertionResult<TSubject, TSubject, TExpected>;
208+
// eslint-disable-next-line @typescript-eslint/ban-types
209209
public isIn<TExpected extends object>(
210210
expected: TExpected,
211211
reverse: boolean
@@ -294,6 +294,7 @@ class Assert<TSubject> {
294294
public async resolves<TExpected>(expected: TExpected): Promise<AssertionResult<TSubject, unknown, TExpected>>;
295295
public async resolves<TExpected>(expected: TExpected, reverse: boolean): Promise<AssertionResult<TSubject, unknown, TExpected>>;
296296
public async resolves(expected: unknown = anything, reverse: boolean = false): Promise<AssertionResult<unknown, unknown, unknown>> {
297+
// eslint-disable-next-line @typescript-eslint/ban-types
297298
const isInResult = new Assert('then').isIn(<object><unknown>this.subject);
298299

299300
if (!isInResult.result) {
@@ -328,6 +329,7 @@ class Assert<TSubject> {
328329
public async rejects<TExpected>(expected: TExpected): Promise<AssertionResult<TSubject, unknown, TExpected>>;
329330
public async rejects<TExpected>(expected: TExpected, reverse: boolean): Promise<AssertionResult<TSubject, unknown, TExpected>>;
330331
public async rejects(expected: unknown = anything, reverse: boolean = false): Promise<AssertionResult<unknown, unknown, unknown>> {
332+
// eslint-disable-next-line @typescript-eslint/ban-types
331333
const isInResult = new Assert('then').isIn(<object><unknown>this.subject);
332334

333335
if (!isInResult.result) {

source/assert/assertion-result.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1+
import { AssertionResultEvent } from '../test/test-reporter/events/assertion-result/assertion-result-event';
2+
import { AssertionResultEventType } from '../test/test-reporter/events/assertion-result/assertion-result-event-type';
3+
import { TestReporter } from '../test/test-reporter';
14
import { toDisplayString } from '@colonise/utilities';
25
import {
36
Test, TestCase
47
} from '../test';
5-
import { TestReporter } from '../test/test-reporter';
6-
import { AssertionResultEvent } from '../test/test-reporter/events/assertion-result/assertion-result-event';
7-
import { AssertionResultEventType } from '../test/test-reporter/events/assertion-result/assertion-result-event-type';
88

99
export type UnknownAssertionResult = AssertionResult<unknown, unknown, unknown>;
1010

@@ -65,7 +65,7 @@ export class AssertionResult<TSubject, TActual, TExpected> {
6565
}
6666

6767
// eslint-disable-next-line max-params
68-
public constructor (
68+
public constructor(
6969
subject: TSubject,
7070
actual: TActual,
7171
expected: TExpected,

source/expect/a-or-an.ts

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
import { assert } from '../assert';
2+
import type { AssertionResult } from '../assert';
13
import type { Constructor } from '@colonise/utilities';
2-
import { assert, AssertionResult } from '../assert';
34

45
export interface AChain<TSubject> {
56

@@ -65,14 +66,9 @@ export interface AnChain<TSubject> {
6566
*/
6667
<TExpected extends string>(expected: TExpected): AssertionResult<TSubject, TSubject, TExpected>;
6768

68-
/**
69-
* @example expect(actual).to.be.an.object()
70-
*/
71-
// eslint-disable-next-line @typescript-eslint/ban-types
72-
object(): AssertionResult<TSubject, TSubject, object>;
73-
7469
instance: {
7570
of: {
71+
7672
/**
7773
* @example expect(actual).to.be.an(expected)
7874
*
@@ -86,22 +82,28 @@ export interface AnChain<TSubject> {
8682
* @param expected
8783
*/
8884
<TExpected extends string>(expected: TExpected): AssertionResult<TSubject, TSubject, TExpected>;
89-
}
90-
}
85+
};
86+
};
87+
88+
/**
89+
* @example expect(actual).to.be.an.object()
90+
*/
91+
// eslint-disable-next-line @typescript-eslint/ban-types
92+
object(): AssertionResult<TSubject, TSubject, object>;
9193
}
9294

95+
// eslint-disable-next-line max-lines-per-function
9396
export function createAOrAnChain<TSubject>(subject: TSubject, reverse: boolean = false): AChain<TSubject> & AnChain<TSubject> {
94-
return Object.defineProperties(
97+
return <AChain<TSubject> & AnChain<TSubject>>Object.defineProperties(
9598
// eslint-disable-next-line id-length, prefer-arrow-callback
9699
function a<TExpected extends Constructor<TSubject> | string>(
97100
expected: TExpected
98101
): AssertionResult<TSubject, TSubject, TExpected> {
99102
if (typeof expected === 'string') {
100103
return <AssertionResult<TSubject, TSubject, TExpected>><unknown>assert(subject).isTypeOf(<'string'>expected, reverse);
101104
}
102-
else {
103-
return <AssertionResult<TSubject, TSubject, TExpected>>assert(subject).isAnInstanceOf(<Constructor<TSubject>>expected, reverse);
104-
}
105+
106+
return <AssertionResult<TSubject, TSubject, TExpected>>assert(subject).isAnInstanceOf(<Constructor<TSubject>>expected, reverse);
105107
},
106108
{
107109
string: {
@@ -119,7 +121,7 @@ export function createAOrAnChain<TSubject>(subject: TSubject, reverse: boolean =
119121
return assert(subject).isTypeOf('bigint', reverse);
120122
}
121123
},
122-
boolean: {
124+
'boolean': {
123125
value(): AssertionResult<TSubject, TSubject, boolean> {
124126
return assert(subject).isTypeOf('boolean', reverse);
125127
}
@@ -129,25 +131,26 @@ export function createAOrAnChain<TSubject>(subject: TSubject, reverse: boolean =
129131
return assert(subject).isTypeOf('symbol', reverse);
130132
}
131133
},
132-
// eslint-disable-next-line @typescript-eslint/ban-types
133-
function: {
134+
'function': {
135+
// eslint-disable-next-line @typescript-eslint/ban-types
134136
value(): AssertionResult<TSubject, TSubject, Function> {
135137
return assert(subject).isTypeOf('function', reverse);
136138
}
137139
},
138-
// eslint-disable-next-line @typescript-eslint/ban-types
139140
object: {
141+
// eslint-disable-next-line @typescript-eslint/ban-types
140142
value(): AssertionResult<TSubject, TSubject, object> {
141143
return assert(subject).isTypeOf('object', reverse);
142144
}
143145
},
144146
instance: {
145147
get() {
146148
return {
147-
of: function (expected: Constructor) {
149+
// eslint-disable-next-line id-length
150+
of(expected: Constructor) {
148151
return assert(subject).isAnInstanceOf(expected, reverse);
149152
}
150-
}
153+
};
151154
}
152155
}
153156
}

0 commit comments

Comments
 (0)