11import "reflect-metadata" ;
22import { MetadataBuilder } from "../../src/metadata-builder/MetadataBuilder" ;
3-
4- import { Post } from "../../src/decorator/Post" ;
5- import { Controller } from "../../src" ;
3+ import { Controller , getMetadataArgsStorage , Post } from "../../src" ;
64
75const expect = require ( "chakram" ) . expect ;
86
97describe ( "controller inheritance" , ( ) => {
10- const metadataBuilder = new MetadataBuilder ( { } ) ;
11-
12- abstract class AbstractControllerTemplate {
13- @Post ( )
14- public create ( ) {
15- }
16- }
17-
18- @Controller ( `/derivative` )
19- class DerivativeController extends AbstractControllerTemplate {
20- }
21-
22- @Controller ( `/autonomous` )
23- class AutonomousController {
24- @Post ( )
25- public create ( ) {
26- }
27- }
28-
298
309 it ( "should build empty meta for empty set" , ( ) => {
10+ // Reset storage
11+ getMetadataArgsStorage ( ) . reset ( ) ;
12+ const metadataBuilder = new MetadataBuilder ( { } ) ;
3113 const meta = metadataBuilder . buildControllerMetadata ( [ ] ) ;
3214
3315 expect ( meta . length ) . to . be . eq ( 0 ) ;
3416 } ) ;
3517
36- it ( "should build meta if only derivative controller given" , ( ) => {
18+ it ( "should build meta if the only derivative controller is given" , ( ) => {
19+ // Reset storage
20+ getMetadataArgsStorage ( ) . reset ( ) ;
21+
22+ // Persist storage from decorators
23+ abstract class AbstractControllerTemplate {
24+ @Post ( )
25+ public create ( ) { }
26+ }
27+
28+ @Controller ( `/derivative` )
29+ class DerivativeController extends AbstractControllerTemplate { }
30+
31+ @Controller ( `/autonomous` )
32+ class AutonomousController {
33+ @Post ( )
34+ public create ( ) { }
35+ }
36+
37+ // Build controllers
38+ const metadataBuilder = new MetadataBuilder ( { } ) ;
3739 const meta = metadataBuilder . buildControllerMetadata ( [
3840 DerivativeController ,
3941 ] ) ;
@@ -46,7 +48,26 @@ describe("controller inheritance", () => {
4648 expect ( meta [ 0 ] . actions [ 0 ] . type ) . to . be . eq ( "post" ) ;
4749 } ) ;
4850
49- it ( "should build meta if only autonomous controller given" , ( ) => {
51+ it ( "should build meta if the only autonomous controller is given" , ( ) => {
52+ getMetadataArgsStorage ( ) . reset ( ) ;
53+
54+ // Persist storage from decorators
55+ abstract class AbstractControllerTemplate {
56+ @Post ( )
57+ public create ( ) { }
58+ }
59+
60+ @Controller ( `/derivative` )
61+ class DerivativeController extends AbstractControllerTemplate { }
62+
63+ @Controller ( `/autonomous` )
64+ class AutonomousController {
65+ @Post ( )
66+ public create ( ) { }
67+ }
68+
69+ // Build controllers
70+ const metadataBuilder = new MetadataBuilder ( { } ) ;
5071 const meta = metadataBuilder . buildControllerMetadata ( [
5172 AutonomousController ,
5273 ] ) ;
@@ -59,11 +80,27 @@ describe("controller inheritance", () => {
5980 expect ( meta [ 0 ] . actions [ 0 ] . type ) . to . be . eq ( "post" ) ;
6081 } ) ;
6182
62- it ( "should build meta if autonomous and derivative controllers given" , ( ) => {
63- const meta = metadataBuilder . buildControllerMetadata ( [
64- DerivativeController ,
65- AutonomousController ,
66- ] ) ;
83+ it ( "should build meta both when autonomous and derivative controllers are given" , ( ) => {
84+ getMetadataArgsStorage ( ) . reset ( ) ;
85+
86+ // Persist storage from decorators
87+ abstract class AbstractControllerTemplate {
88+ @Post ( )
89+ public create ( ) { }
90+ }
91+
92+ @Controller ( `/derivative` )
93+ class DerivativeController extends AbstractControllerTemplate { }
94+
95+ @Controller ( `/autonomous` )
96+ class AutonomousController {
97+ @Post ( )
98+ public create ( ) { }
99+ }
100+
101+ // Build controllers
102+ const metadataBuilder = new MetadataBuilder ( { } ) ;
103+ const meta = metadataBuilder . buildControllerMetadata ( ) ;
67104
68105 expect ( meta . length ) . to . be . eq ( 2 ) ;
69106 expect ( meta [ 0 ] . actions . length ) . to . be . eq ( 1 ) ;
@@ -74,5 +111,4 @@ describe("controller inheritance", () => {
74111 expect ( meta [ 1 ] . actions [ 0 ] . method ) . to . be . eq ( "create" ) ;
75112 expect ( meta [ 1 ] . actions [ 0 ] . type ) . to . be . eq ( "post" ) ;
76113 } ) ;
77-
78114} ) ;
0 commit comments