/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 / 2 0 2 0 ĠL it ote Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . lit ote . km ongo . session Ċ Ċ import Ġcom . mongodb . client . Client Session Ċ import Ġcom . mongodb . client . Mongo Collection Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . lit ote . km ongo . All Categories K Mongo Base Test Ċ import Ġorg . lit ote . km ongo . Mongo Operator . match Ċ import Ġorg . lit ote . km ongo . aggregate Ċ import Ġorg . lit ote . km ongo . model . Friend Ċ import Ġorg . lit ote . km ongo . session . Aggregate With Session Test . Article Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠAggregate With Session Test Ġ: ĠAll Categories K Mongo Base Test < Article >() Ġ{ ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġdata Ġclass ĠArticle ( val Ġtitle : ĠString , Ġval Ġauthor : ĠString , Ġval Ġtags : ĠList < String >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconstructor ( title : ĠString , Ġauthor : ĠString , Ġvar arg Ġtags : ĠString ) Ġ: Ġthis ( title , Ġauthor , Ġtags . asList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġfriend Col : ĠMongo Collection < Friend > ĊĠĠĠ Ġlateinit Ġvar Ġsession : ĠClient Session ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġsession Ġ= Ġmongo Client . start Session () ĊĠĠĠĠĠĠĠ Ġcol . insert One ( session , ĠArticle (" Z ombie ĠPan ic ", Ġ" K irst y ĠM ck ay ", Ġ" hor ror ", Ġ" vir us ")) ĊĠĠĠĠĠĠĠ Ġcol . insert One ( session , ĠArticle (" Ap ocal yp se ĠZ ombie ", Ġ" M ab erry ĠJon athan ", Ġ" hor ror ", Ġ" dead ")) ĊĠĠĠĠĠĠĠ Ġcol . insert One ( session , ĠArticle (" World ĠWar ĠZ ", Ġ" Max ĠBro ok s ", Ġ" hor ror ", Ġ" vir us ", Ġ" pan de mic ")) ĊĊĠĠĠĠĠĠĠ Ġfriend Col Ġ= Ġget Collection () ĊĠĠĠĠĠĠĠ Ġfriend Col . insert One ( session , ĠFriend (" W illiam ")) ĊĠĠĠĠĠĠĠ Ġfriend Col . insert One ( session , ĠFriend (" John ")) ĊĠĠĠĠĠĠĠ Ġfriend Col . insert One ( session , ĠFriend (" Rich ard ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġsession . close () ĊĠĠĠĠĠĠĠ Ġdrop Collection < Friend >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan Aggregate () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġcol . aggregate < Article >( session , Ġ" {$ match :{ }} "). toList () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġl . size ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ