Skip to content

Commit

Permalink
test update
Browse files Browse the repository at this point in the history
  • Loading branch information
recap committed Jun 28, 2024
1 parent 6ca2514 commit efaad68
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 10 deletions.
4 changes: 4 additions & 0 deletions UserMap.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ class UserMap extends Map {
throw new Error("Method not implemented.")
}

findAll() {
throw new Error("Method not implemented.")
}

forceSave() {
throw new Error("Method not implemented.")
}
Expand Down
30 changes: 30 additions & 0 deletions UserSqliteDb.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,23 @@ class UserSqliteDb extends UserMap {
})
}

_getTableNames() {
return new Promise((resolve, reject) => {
this.db.all(
"SELECT name FROM sqlite_master WHERE type='table'",
[],
(err, rows) => {
if (err) {
reject(err)
} else {
const tableNames = rows.map((row) => row.name)
resolve(tableNames)
}
},
)
}) // Promise
}

load() {
return new Promise((resolve, reject) => {
const query = `SELECT * FROM users`
Expand Down Expand Up @@ -47,6 +64,19 @@ class UserSqliteDb extends UserMap {
}) //Promise
}

findAll() {
return new Promise((resolve, reject) => {
const query = `SELECT * FROM users`
this.db.all(query, (err, rows) => {
if (err) {
reject(err)
} else {
resolve(rows)
}
})
}) // Promise
}

upsert(user) {
return new Promise((resolve, reject) => {
const query = `
Expand Down
54 changes: 44 additions & 10 deletions test/sqlite-test.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,53 @@
const test = require("node:test")
const assert = require("node:assert")
const userDb = require("../UserSqliteDb.js")
const UserDb = require("../UserSqliteDb.js")
const User = require("../user.js")

test("test initialize sqlite db", async () => {
// db.serialize()
// const tables = await db.getTables()
// assert.deepStrictEqual(tables, ["users"])
const usersDb = new UserDb(":memory:")
const tables = await usersDb._getTableNames()
assert.deepStrictEqual(tables, ["users"])
})

test("test insert user", async () => {
// const user = new User("u001", "TestExperiment")
// await db.saveUser(user)
// const rows = await db.findAll()
// const firstUser = rows[0]
// const u = JSON.parse(firstUser.jsonObj)
// assert.strictEqual("TestExperiment", u.experimentId)
const usersDb = new UserDb(":memory:")
const user = new User("u001", "TestExperiment")
await usersDb.save(user)
const rows = await usersDb.findAll()
const firstUser = rows[0]
const u = JSON.parse(firstUser.jsonObj)
assert.strictEqual("TestExperiment", u.experimentId)
})

test("test upsert user", async () => {
const usersDb = new UserDb(":memory:")
const user = new User("u001", "TestExperiment")
await usersDb.save(user)
let rows = await usersDb.findAll()
let firstUser = rows[0]
let u = JSON.parse(firstUser.jsonObj)
assert.strictEqual("TestExperiment", u.experimentId)

user.redirectedUrl = "http://127.0.0.1/etgohome"
await usersDb.upsert(user)
rows = await usersDb.findAll()
firstUser = rows[0]
u = JSON.parse(firstUser.jsonObj)
assert.strictEqual("u001", u.userId)
assert.strictEqual("http://127.0.0.1/etgohome", u.redirectedUrl)

user.experimentId = "AnotherExperiment"
await usersDb.upsert(user)
rows = await usersDb.findAll()
firstUser = rows[0]
u = JSON.parse(firstUser.jsonObj)
assert.strictEqual("u001", u.userId)
assert.notEqual("AnotherExperiment", u.experimentId)

assert.strictEqual(2, rows.length)

let secondUser = rows[1]
let u2 = JSON.parse(secondUser.jsonObj)
assert.strictEqual("u001", u2.userId)
assert.strictEqual("AnotherExperiment", u2.experimentId)
})

0 comments on commit efaad68

Please sign in to comment.