@@ -1070,5 +1070,146 @@ model Gallery {
10701070 await expect ( client . asset . findMany ( ) ) . toResolveWithLength ( 1 ) ;
10711071 } ) ;
10721072 } ) ;
1073+
1074+ describe ( 'Delegate aggregation tests' , ( ) => {
1075+ beforeEach ( async ( ) => {
1076+ const u = await client . user . create ( {
1077+ data : {
1078+ id : 1 ,
1079+ 1080+ } ,
1081+ } ) ;
1082+ await client . ratedVideo . create ( {
1083+ data : {
1084+ id : 1 ,
1085+ viewCount : 0 ,
1086+ duration : 100 ,
1087+ url : 'v1' ,
1088+ rating : 5 ,
1089+ owner : { connect : { id : u . id } } ,
1090+ user : { connect : { id : u . id } } ,
1091+ comments : { create : [ { content : 'c1' } , { content : 'c2' } ] } ,
1092+ } ,
1093+ } ) ;
1094+ await client . ratedVideo . create ( {
1095+ data : {
1096+ id : 2 ,
1097+ viewCount : 2 ,
1098+ duration : 200 ,
1099+ url : 'v2' ,
1100+ rating : 3 ,
1101+ } ,
1102+ } ) ;
1103+ } ) ;
1104+
1105+ it ( 'works with count' , async ( ) => {
1106+ await expect (
1107+ client . ratedVideo . count ( {
1108+ where : { rating : 5 } ,
1109+ } ) ,
1110+ ) . resolves . toEqual ( 1 ) ;
1111+ await expect (
1112+ client . ratedVideo . count ( {
1113+ where : { duration : 100 } ,
1114+ } ) ,
1115+ ) . resolves . toEqual ( 1 ) ;
1116+ await expect (
1117+ client . ratedVideo . count ( {
1118+ where : { viewCount : 2 } ,
1119+ } ) ,
1120+ ) . resolves . toEqual ( 1 ) ;
1121+
1122+ await expect (
1123+ client . video . count ( {
1124+ where : { duration : 100 } ,
1125+ } ) ,
1126+ ) . resolves . toEqual ( 1 ) ;
1127+ await expect (
1128+ client . asset . count ( {
1129+ where : { viewCount : { gt : 0 } } ,
1130+ } ) ,
1131+ ) . resolves . toEqual ( 1 ) ;
1132+
1133+ // field selection
1134+ await expect (
1135+ client . ratedVideo . count ( {
1136+ select : { _all : true , viewCount : true , url : true , rating : true } ,
1137+ } ) ,
1138+ ) . resolves . toMatchObject ( {
1139+ _all : 2 ,
1140+ viewCount : 2 ,
1141+ url : 2 ,
1142+ rating : 2 ,
1143+ } ) ;
1144+ await expect (
1145+ client . video . count ( {
1146+ select : { _all : true , viewCount : true , url : true } ,
1147+ } ) ,
1148+ ) . resolves . toMatchObject ( {
1149+ _all : 2 ,
1150+ viewCount : 2 ,
1151+ url : 2 ,
1152+ } ) ;
1153+ await expect (
1154+ client . asset . count ( {
1155+ select : { _all : true , viewCount : true } ,
1156+ } ) ,
1157+ ) . resolves . toMatchObject ( {
1158+ _all : 2 ,
1159+ viewCount : 2 ,
1160+ } ) ;
1161+ } ) ;
1162+
1163+ it ( 'works with aggregate' , async ( ) => {
1164+ await expect (
1165+ client . ratedVideo . aggregate ( {
1166+ where : { viewCount : { gte : 0 } , duration : { gt : 0 } , rating : { gt : 0 } } ,
1167+ _avg : { viewCount : true , duration : true , rating : true } ,
1168+ _count : true ,
1169+ } ) ,
1170+ ) . resolves . toMatchObject ( {
1171+ _avg : {
1172+ viewCount : 1 ,
1173+ duration : 150 ,
1174+ rating : 4 ,
1175+ } ,
1176+ _count : 2 ,
1177+ } ) ;
1178+ await expect (
1179+ client . video . aggregate ( {
1180+ where : { viewCount : { gte : 0 } , duration : { gt : 0 } } ,
1181+ _avg : { viewCount : true , duration : true } ,
1182+ _count : true ,
1183+ } ) ,
1184+ ) . resolves . toMatchObject ( {
1185+ _avg : {
1186+ viewCount : 1 ,
1187+ duration : 150 ,
1188+ } ,
1189+ _count : 2 ,
1190+ } ) ;
1191+ await expect (
1192+ client . asset . aggregate ( {
1193+ where : { viewCount : { gte : 0 } } ,
1194+ _avg : { viewCount : true } ,
1195+ _count : true ,
1196+ } ) ,
1197+ ) . resolves . toMatchObject ( {
1198+ _avg : {
1199+ viewCount : 1 ,
1200+ } ,
1201+ _count : 2 ,
1202+ } ) ;
1203+
1204+ // just count
1205+ await expect (
1206+ client . ratedVideo . aggregate ( {
1207+ _count : true ,
1208+ } ) ,
1209+ ) . resolves . toMatchObject ( {
1210+ _count : 2 ,
1211+ } ) ;
1212+ } ) ;
1213+ } ) ;
10731214 } ,
10741215) ;
0 commit comments