@codefast/di-testing 0.0.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/discovery/dependency-scanner.d.ts +6 -0
  3. package/dist/discovery/dependency-scanner.d.ts.map +1 -1
  4. package/dist/discovery/dependency-scanner.js +4 -0
  5. package/dist/discovery/dependency-scanner.js.map +1 -1
  6. package/dist/discovery/mock-binder.d.ts +18 -1
  7. package/dist/discovery/mock-binder.d.ts.map +1 -1
  8. package/dist/discovery/mock-binder.js +31 -10
  9. package/dist/discovery/mock-binder.js.map +1 -1
  10. package/dist/errors/errors.d.ts +17 -1
  11. package/dist/errors/errors.d.ts.map +1 -1
  12. package/dist/errors/errors.js +12 -0
  13. package/dist/errors/errors.js.map +1 -1
  14. package/dist/mocking/auto-mock.d.ts +8 -0
  15. package/dist/mocking/auto-mock.d.ts.map +1 -1
  16. package/dist/mocking/auto-mock.js +4 -0
  17. package/dist/mocking/auto-mock.js.map +1 -1
  18. package/dist/mocking/mock-factory.d.ts +6 -0
  19. package/dist/mocking/mock-factory.d.ts.map +1 -1
  20. package/dist/mocking/mock-factory.js +2 -0
  21. package/dist/mocking/mock-factory.js.map +1 -1
  22. package/dist/mocking/spy.d.ts +8 -0
  23. package/dist/mocking/spy.d.ts.map +1 -1
  24. package/dist/mocking/spy.js +2 -0
  25. package/dist/mocking/spy.js.map +1 -1
  26. package/dist/test-bed/bed-builder.d.ts +8 -0
  27. package/dist/test-bed/bed-builder.d.ts.map +1 -1
  28. package/dist/test-bed/bed-builder.js +2 -0
  29. package/dist/test-bed/bed-builder.js.map +1 -1
  30. package/dist/test-bed/sociable-builder.d.ts +4 -0
  31. package/dist/test-bed/sociable-builder.d.ts.map +1 -1
  32. package/dist/test-bed/sociable-builder.js +2 -0
  33. package/dist/test-bed/sociable-builder.js.map +1 -1
  34. package/dist/test-bed/solitary-builder.d.ts +4 -0
  35. package/dist/test-bed/solitary-builder.d.ts.map +1 -1
  36. package/dist/test-bed/solitary-builder.js +2 -0
  37. package/dist/test-bed/solitary-builder.js.map +1 -1
  38. package/dist/test-bed/test-bed.d.ts +4 -0
  39. package/dist/test-bed/test-bed.d.ts.map +1 -1
  40. package/dist/test-bed/test-bed.js +2 -0
  41. package/dist/test-bed/test-bed.js.map +1 -1
  42. package/dist/test-bed/unit-test-bed.d.ts +10 -0
  43. package/dist/test-bed/unit-test-bed.d.ts.map +1 -1
  44. package/dist/test-bed/unit-test-bed.js +4 -0
  45. package/dist/test-bed/unit-test-bed.js.map +1 -1
  46. package/dist/types.d.ts +2 -0
  47. package/dist/types.d.ts.map +1 -1
  48. package/package.json +4 -4
  49. package/src/discovery/dependency-scanner.ts +6 -0
  50. package/src/discovery/mock-binder.ts +45 -10
  51. package/src/errors/errors.ts +17 -1
  52. package/src/mocking/auto-mock.ts +8 -0
  53. package/src/mocking/mock-factory.ts +6 -0
  54. package/src/mocking/spy.ts +8 -0
  55. package/src/test-bed/bed-builder.ts +8 -0
  56. package/src/test-bed/sociable-builder.ts +4 -0
  57. package/src/test-bed/solitary-builder.ts +4 -0
  58. package/src/test-bed/test-bed.ts +4 -0
  59. package/src/test-bed/unit-test-bed.ts +10 -0
  60. package/src/types.ts +2 -0
@@ -2,6 +2,8 @@
2
2
 
3
3
  /**
4
4
  * One recorded invocation's outcome — a returned value or a thrown error.
5
+ *
6
+ * @since 0.1.0
5
7
  */
6
8
  export interface SpyResult {
7
9
  readonly type: "return" | "throw";
@@ -12,6 +14,8 @@ export interface SpyResult {
12
14
  * The call log a spy exposes for assertions.
13
15
  *
14
16
  * @typeParam Args - The spy's argument tuple.
17
+ *
18
+ * @since 0.1.0
15
19
  */
16
20
  export interface SpyState<Args extends ReadonlyArray<unknown>> {
17
21
  readonly calls: ReadonlyArray<Args>;
@@ -24,6 +28,8 @@ export interface SpyState<Args extends ReadonlyArray<unknown>> {
24
28
  *
25
29
  * @remarks `Return` defaults to `any` so a spy drops into any typed method slot, exactly as Vitest's
26
30
  * own mock type does — the package's one deliberate `any`.
31
+ *
32
+ * @since 0.1.0
27
33
  */
28
34
  export interface Spy<Args extends ReadonlyArray<unknown> = ReadonlyArray<unknown>, Return = any> {
29
35
  (...args: Args): Return;
@@ -40,6 +46,8 @@ export interface Spy<Args extends ReadonlyArray<unknown> = ReadonlyArray<unknown
40
46
 
41
47
  /**
42
48
  * Creates a fresh zero-dependency spy that records its calls and returns `undefined` until configured.
49
+ *
50
+ * @since 0.1.0
43
51
  */
44
52
  export function createSpy(): Spy {
45
53
  const calls: Array<ReadonlyArray<unknown>> = [];
@@ -17,6 +17,8 @@ import type { InjectionIdentifier } from "#/types";
17
17
  *
18
18
  * @typeParam Backend - The spy type the mock factory produces; it flows into every `Mocked` member,
19
19
  * `mocks.get`, and the `.stub` callback, so `() => vi.fn()` yields Vitest's own mock typing.
20
+ *
21
+ * @since 0.1.0
20
22
  */
21
23
  export interface TestBedOptions<Backend extends MockFunction = Spy> {
22
24
  /** Spy factory each auto-mock property is materialized with; defaults to the built-in spy. */
@@ -31,6 +33,8 @@ export interface TestBedOptions<Backend extends MockFunction = Spy> {
31
33
  * @typeParam Dependency - The dependency's value type.
32
34
  * @typeParam Owner - The builder the chain returns to.
33
35
  * @typeParam Backend - The spy type the bed's mock factory produces.
36
+ *
37
+ * @since 0.1.0
34
38
  */
35
39
  export interface MockOverrideBuilder<Dependency, Owner, Backend extends MockFunction = Spy> {
36
40
  /**
@@ -54,6 +58,8 @@ export interface MockOverrideBuilder<Dependency, Owner, Backend extends MockFunc
54
58
 
55
59
  /**
56
60
  * What a builder's prepare step hands the compile template: the container and the bound mock entries.
61
+ *
62
+ * @since 0.1.0
57
63
  */
58
64
  export interface PreparedBed {
59
65
  readonly container: Container;
@@ -69,6 +75,8 @@ export interface PreparedBed {
69
75
  *
70
76
  * @typeParam Class - The class under test.
71
77
  * @typeParam Backend - The spy type the bed's mock factory produces.
78
+ *
79
+ * @since 0.1.0
72
80
  */
73
81
  export abstract class BedBuilder<Class, Backend extends MockFunction = Spy> {
74
82
  protected readonly target: Constructor<Class>;
@@ -23,6 +23,8 @@ import type { InjectionIdentifier } from "#/types";
23
23
  *
24
24
  * @typeParam Class - The class under test.
25
25
  * @typeParam Backend - The spy type the bed's mock factory produces.
26
+ *
27
+ * @since 0.1.0
26
28
  */
27
29
  export interface SociableTestBedBuilder<Class, Backend extends MockFunction = Spy> {
28
30
  /** Keeps a class-keyed collaborator real; its own dependencies follow the same exposure rules. */
@@ -46,6 +48,8 @@ type PreparedSociableBed = PreparedBed & { readonly realClasses: ReadonlySet<Con
46
48
  *
47
49
  * @typeParam Class - The class under test.
48
50
  * @typeParam Backend - The spy type the bed's mock factory produces.
51
+ *
52
+ * @since 0.1.0
49
53
  */
50
54
  export class SociableBuilder<Class, Backend extends MockFunction = Spy>
51
55
  extends BedBuilder<Class, Backend>
@@ -18,6 +18,8 @@ import type { InjectionIdentifier } from "#/types";
18
18
  *
19
19
  * @typeParam Class - The class under test.
20
20
  * @typeParam Backend - The spy type the bed's mock factory produces.
21
+ *
22
+ * @since 0.1.0
21
23
  */
22
24
  export interface SolitaryTestBedBuilder<Class, Backend extends MockFunction = Spy> {
23
25
  /** Replaces the auto-mock for one dependency with a hand-written stub or a concrete value. */
@@ -36,6 +38,8 @@ export interface SolitaryTestBedBuilder<Class, Backend extends MockFunction = Sp
36
38
  *
37
39
  * @typeParam Class - The class under test.
38
40
  * @typeParam Backend - The spy type the bed's mock factory produces.
41
+ *
42
+ * @since 0.1.0
39
43
  */
40
44
  export class SolitaryBuilder<Class, Backend extends MockFunction = Spy>
41
45
  extends BedBuilder<Class, Backend>
@@ -12,6 +12,8 @@ import type { SolitaryTestBedBuilder } from "#/test-bed/solitary-builder";
12
12
 
13
13
  /**
14
14
  * The factory surface for building isolated units under test.
15
+ *
16
+ * @since 0.1.0
15
17
  */
16
18
  export interface TestBedStatic {
17
19
  /**
@@ -43,6 +45,8 @@ export interface TestBedStatic {
43
45
  *
44
46
  * @remarks `solitary` and `sociable` record the target and options only; nothing is instantiated
45
47
  * until `compile()`.
48
+ *
49
+ * @since 0.1.0
46
50
  */
47
51
  export const TestBed: TestBedStatic = {
48
52
  solitary<Class, Backend extends MockFunction = Spy>(
@@ -17,6 +17,8 @@ import type { Spy } from "#/mocking/spy";
17
17
  * A lookup from a dependency's token or class to the mock the unit was built with.
18
18
  *
19
19
  * @typeParam Backend - The spy type the bed's mock factory produces.
20
+ *
21
+ * @since 0.1.0
20
22
  */
21
23
  export interface UnitReference<Backend extends MockFunction = Spy> {
22
24
  /**
@@ -44,6 +46,8 @@ export interface UnitReference<Backend extends MockFunction = Spy> {
44
46
  *
45
47
  * @typeParam Class - The class under test.
46
48
  * @typeParam Backend - The spy type the bed's mock factory produces.
49
+ *
50
+ * @since 0.1.0
47
51
  */
48
52
  export interface UnitTestBed<Class, Backend extends MockFunction = Spy> extends AsyncDisposable {
49
53
  readonly unit: Class;
@@ -59,6 +63,8 @@ export interface UnitTestBed<Class, Backend extends MockFunction = Spy> extends
59
63
  *
60
64
  * @typeParam Class - The class under test.
61
65
  * @typeParam Backend - The spy type the bed's mock factory produces.
66
+ *
67
+ * @since 0.1.0
62
68
  */
63
69
  export interface SociableUnitTestBed<Class, Backend extends MockFunction = Spy> extends UnitTestBed<Class, Backend> {
64
70
  /**
@@ -71,6 +77,8 @@ export interface SociableUnitTestBed<Class, Backend extends MockFunction = Spy>
71
77
 
72
78
  /**
73
79
  * Wraps a compiled bed with access to its exposed real collaborators.
80
+ *
81
+ * @since 0.1.0
74
82
  */
75
83
  export function createSociableUnitTestBed<Class, Backend extends MockFunction = Spy>(
76
84
  bed: UnitTestBed<Class, Backend>,
@@ -97,6 +105,8 @@ export function createSociableUnitTestBed<Class, Backend extends MockFunction =
97
105
 
98
106
  /**
99
107
  * Assembles a {@link UnitTestBed} around an instantiated unit and its bound mock entries.
108
+ *
109
+ * @since 0.1.0
100
110
  */
101
111
  export function createUnitTestBed<Class, Backend extends MockFunction = Spy>(
102
112
  unit: Class,
package/src/types.ts CHANGED
@@ -9,5 +9,7 @@ import type { Constructor, Token } from "@codefast/di";
9
9
  * `mocks.get()` can map an identifier back to the mock type it produced.
10
10
  *
11
11
  * @typeParam Value - The value type the identified dependency resolves to.
12
+ *
13
+ * @since 0.1.0
12
14
  */
13
15
  export type InjectionIdentifier<Value> = Token<Value> | Constructor<Value>;