getViewsForUser

This commit is contained in:
Michael C
2023-09-30 21:20:42 -04:00
parent 467443a03f
commit 3c6803fb62

View File

@@ -1,7 +1,8 @@
import { getHash } from "../../src/utils/getHash";
import { db } from "../../src/databases/databases"; import { db } from "../../src/databases/databases";
import { client } from "../utils/httpClient"; import { client } from "../utils/httpClient";
import assert from "assert"; import assert from "assert";
import { genUsers, User } from "../utils/genUser";
import { insertSegment } from "../utils/segmentQueryGen";
// helpers // helpers
const endpoint = "/api/getViewsForUser"; const endpoint = "/api/getViewsForUser";
@@ -10,53 +11,46 @@ const getViewsForUser = (userID: string) => client({
params: { userID } params: { userID }
}); });
const getViewUserOne = "getViewUser1"; const cases = [
const userOneViewsFirst = 30; "u-1",
const userOneViewsSecond = 0; "u-2",
"u-3"
];
const users = genUsers("getViewUser", cases);
const getViewUserTwo = "getViewUser2"; // set views for users
const userTwoViews = 0; users["u-1"].info["views1"] = 30;
users["u-1"].info["views2"] = 0;
const getViewUserThree = "getViewUser3"; users["u-1"].info["views"] = users["u-1"].info.views1 + users["u-1"].info.views2;
users["u-2"].info["views"] = 0;
users["u-3"].info["views"] = 0;
const checkUserViews = (user: User) =>
getViewsForUser(user.privID)
.then(result => {
assert.strictEqual(result.status, 200);
assert.strictEqual(result.data.viewCount, user.info.views);
});
describe("getViewsForUser", function() { describe("getViewsForUser", function() {
before(() => { before(() => {
const insertSponsorTimeQuery = 'INSERT INTO "sponsorTimes" ("videoID", "startTime", "endTime", "votes", "UUID", "userID", "timeSubmitted", views, category, "actionType", "videoDuration", "shadowHidden", "hashedVideoID") VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; // add views for users
db.prepare("run", insertSponsorTimeQuery, ["getViewUserVideo", 0, 1, 0, "getViewUserVideo0", getHash(getViewUserOne), 0, userOneViewsFirst, "sponsor", "skip", 0, 0, "getViewUserVideo"]); insertSegment(db, { userID: users["u-1"].pubID, views: users["u-1"].info.views1 });
db.prepare("run", insertSponsorTimeQuery, ["getViewUserVideo", 0, 1, 0, "getViewUserVideo1", getHash(getViewUserOne), 0, userOneViewsSecond, "sponsor", "skip", 0, 0, "getViewUserVideo"]); insertSegment(db, { userID: users["u-1"].pubID, views: users["u-1"].info.views2 });
db.prepare("run", insertSponsorTimeQuery, ["getViewUserVideo", 0, 1, 0, "getViewUserVideo2", getHash(getViewUserTwo), 0, userTwoViews, "sponsor", "skip", 0, 0, "getViewUserVideo"]); insertSegment(db, { userID: users["u-2"].pubID, views: users["u-2"].info.views });
}); });
it("Should get back views for user one", (done) => { it("Should get back views for user one", () =>
getViewsForUser(getViewUserOne) checkUserViews(users["u-1"])
.then(result => { );
assert.strictEqual(result.data.viewCount, userOneViewsFirst + userOneViewsSecond); it("Should get back views for user two", () =>
done(); checkUserViews(users["u-2"])
}) );
.catch(err => done(err)); it("Should get 404 if no submissions", () =>
}); getViewsForUser(users["u-3"].pubID)
it("Should get back views for user two", (done) => { .then(result => assert.strictEqual(result.status, 404))
getViewsForUser(getViewUserTwo) );
.then(result => { it("Should return 400 if no userID provided", () =>
assert.strictEqual(result.data.viewCount, userTwoViews);
done();
})
.catch(err => done(err));
});
it("Should get 404 if no submissions", (done) => {
getViewsForUser(getViewUserThree)
.then(result => {
assert.strictEqual(result.status, 404);
done();
})
.catch(err => done(err));
});
it("Should return 400 if no userID provided", (done) => {
client({ url: endpoint }) client({ url: endpoint })
.then(res => { .then(res => assert.strictEqual(res.status, 400))
assert.strictEqual(res.status, 400); );
done();
})
.catch(err => done(err));
});
}); });