@@ -3,6 +3,8 @@ import { Test } from '@nestjs/testing';
33import { Server } from 'http' ;
44import * as request from 'supertest' ;
55import { AppModule } from '../src/app.module' ;
6+ import { CreateCatDto } from '../src/cats/dto/create-cat.dto' ;
7+ import { Cat } from '../src/cats/schemas/cat.schema' ;
68
79describe ( 'Mongoose' , ( ) => {
810 let server : Server ;
@@ -32,6 +34,61 @@ describe('Mongoose', () => {
3234 } ) ;
3335 } ) ;
3436
37+ it ( 'should populate array of kittens' , async ( ) => {
38+ let createDto : CreateCatDto = {
39+ name : 'Kitten' ,
40+ breed : 'Maine coon' ,
41+ age : 1 ,
42+ } ;
43+
44+ const kitten : Cat = await new Promise ( ( resolve ) => {
45+ request ( server )
46+ . post ( '/cats' )
47+ . send ( createDto )
48+ . expect ( 201 )
49+ . end ( ( err , { body } ) => {
50+ expect ( body . name ) . toEqual ( createDto . name ) ;
51+ expect ( body . age ) . toEqual ( createDto . age ) ;
52+ expect ( body . breed ) . toEqual ( createDto . breed ) ;
53+ resolve ( body ) ;
54+ } ) ;
55+ } ) ;
56+
57+ createDto = {
58+ ...createDto ,
59+ name : 'Nest' ,
60+ age : 5 ,
61+ kitten : [ kitten . _id as string ] ,
62+ } ;
63+
64+ const parent = await new Promise < string > ( ( resolve ) => {
65+ request ( server )
66+ . post ( '/cats' )
67+ . send ( createDto )
68+ . expect ( 201 )
69+ . end ( ( err , { body } ) => {
70+ expect ( body . name ) . toEqual ( createDto . name ) ;
71+ expect ( body . age ) . toEqual ( createDto . age ) ;
72+ expect ( body . breed ) . toEqual ( createDto . breed ) ;
73+ resolve ( body . _id as string ) ;
74+ } ) ;
75+ } ) ;
76+
77+ await new Promise < void > ( ( resolve ) => {
78+ request ( server )
79+ . get ( `/cat/${ parent } ` )
80+ . expect ( 200 )
81+ . end ( ( err , { body } ) => {
82+ expect ( Array . isArray ( body . kitten ) ) . toBe ( true ) ;
83+ expect ( body . kitten [ 0 ] . _id ) . toBe ( kitten . _id ) ;
84+ expect ( body . kitten [ 0 ] . name ) . toBe ( kitten . name ) ;
85+ expect ( body . kitten [ 0 ] . breed ) . toBe ( kitten . breed ) ;
86+ expect ( body . kitten [ 0 ] . age ) . toBe ( kitten . age ) ;
87+ resolve ( ) ;
88+ } ) ;
89+ } ) ;
90+ } ) ;
91+
3592 afterEach ( async ( ) => {
3693 await app . close ( ) ;
3794 } ) ;
0 commit comments