1
+ import { getHash } from "../../src/utils/getHash" ;
2
+ import { db } from "../../src/databases/databases" ;
3
+ import { client } from "../utils/httpClient" ;
4
+ import assert from "assert" ;
5
+
6
+ // helpers
7
+ const endpoint = "/api/getViewsForUser" ;
8
+ const getViewsForUser = ( userID : string ) => client ( {
9
+ url : endpoint ,
10
+ params : { userID }
11
+ } ) ;
12
+
13
+ const getViewUserOne = "getViewUser1" ;
14
+ const userOneViewsFirst = 30 ;
15
+ const userOneViewsSecond = 0 ;
16
+
17
+ const getViewUserTwo = "getViewUser2" ;
18
+ const userTwoViews = 0 ;
19
+
20
+ const getViewUserThree = "getViewUser3" ;
21
+
22
+
23
+ describe ( "getViewsForUser" , function ( ) {
24
+ before ( ( ) => {
25
+ const insertSponsorTimeQuery = 'INSERT INTO "sponsorTimes" ("videoID", "startTime", "endTime", "votes", "UUID", "userID", "timeSubmitted", views, category, "actionType", "videoDuration", "shadowHidden", "hashedVideoID") VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' ;
26
+ db . prepare ( "run" , insertSponsorTimeQuery , [ "getViewUserVideo" , 0 , 1 , 0 , "getViewUserVideo0" , getHash ( getViewUserOne ) , 0 , userOneViewsFirst , "sponsor" , "skip" , 0 , 0 , "getViewUserVideo" ] ) ;
27
+ db . prepare ( "run" , insertSponsorTimeQuery , [ "getViewUserVideo" , 0 , 1 , 0 , "getViewUserVideo1" , getHash ( getViewUserOne ) , 0 , userOneViewsSecond , "sponsor" , "skip" , 0 , 0 , "getViewUserVideo" ] ) ;
28
+ db . prepare ( "run" , insertSponsorTimeQuery , [ "getViewUserVideo" , 0 , 1 , 0 , "getViewUserVideo2" , getHash ( getViewUserTwo ) , 0 , userTwoViews , "sponsor" , "skip" , 0 , 0 , "getViewUserVideo" ] ) ;
29
+ } ) ;
30
+ it ( "Should get back views for user one" , ( done ) => {
31
+ getViewsForUser ( getViewUserOne )
32
+ . then ( result => {
33
+ assert . strictEqual ( result . data . viewCount , userOneViewsFirst + userOneViewsSecond ) ;
34
+ done ( ) ;
35
+ } )
36
+ . catch ( err => done ( err ) ) ;
37
+ } ) ;
38
+ it ( "Should get back views for user two" , ( done ) => {
39
+ getViewsForUser ( getViewUserTwo )
40
+ . then ( result => {
41
+ assert . strictEqual ( result . data . viewCount , userTwoViews ) ;
42
+ done ( ) ;
43
+ } )
44
+ . catch ( err => done ( err ) ) ;
45
+ } ) ;
46
+ it ( "Should get 404 if no submissions" , ( done ) => {
47
+ getViewsForUser ( getViewUserThree )
48
+ . then ( result => {
49
+ assert . strictEqual ( result . status , 404 ) ;
50
+ done ( ) ;
51
+ } )
52
+ . catch ( err => done ( err ) ) ;
53
+ } ) ;
54
+ it ( "Should return 400 if no userID provided" , ( done ) => {
55
+ client ( { url : endpoint } )
56
+ . then ( res => {
57
+ assert . strictEqual ( res . status , 400 ) ;
58
+ done ( ) ;
59
+ } )
60
+ . catch ( err => done ( err ) ) ;
61
+ } ) ;
62
+ } ) ;
0 commit comments