MCPcopy Index your code
hub / github.com/dnote/dnote / TestDeleteNote

Function TestDeleteNote

pkg/server/app/notes_test.go:270–348  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

268}
269
270func TestDeleteNote(t *testing.T) {
271 testCases := []struct {
272 userUSN int
273 expectedUSN int
274 }{
275 {
276 userUSN: 3,
277 expectedUSN: 4,
278 },
279 {
280 userUSN: 9787,
281 expectedUSN: 9788,
282 },
283 {
284 userUSN: 787,
285 expectedUSN: 788,
286 },
287 }
288
289 for idx, tc := range testCases {
290 func() {
291 db := testutils.InitMemoryDB(t)
292
293 user := testutils.SetupUserData(db, "user@test.com", "password123")
294 testutils.MustExec(t, db.Model(&user).Update("max_usn", tc.userUSN), fmt.Sprintf("preparing user max_usn for test case %d", idx))
295
296 anotherUser := testutils.SetupUserData(db, "another@test.com", "password123")
297 testutils.MustExec(t, db.Model(&anotherUser).Update("max_usn", 55), fmt.Sprintf("preparing user max_usn for test case %d", idx))
298
299 b1 := database.Book{UserID: user.ID, Label: "testBook"}
300 testutils.MustExec(t, db.Save(&b1), fmt.Sprintf("preparing b1 for test case %d", idx))
301
302 note := database.Note{UserID: user.ID, Deleted: false, Body: "test content", BookUUID: b1.UUID}
303 testutils.MustExec(t, db.Save(&note), fmt.Sprintf("preparing note for test case %d", idx))
304
305 // Assert FTS table has content before delete
306 var ftsCountBefore int64
307 testutils.MustExec(t, db.Raw("SELECT COUNT(*) FROM notes_fts WHERE rowid = ?", note.ID).Scan(&ftsCountBefore), fmt.Sprintf("counting notes_fts before delete for test case %d", idx))
308 assert.Equal(t, ftsCountBefore, int64(1), "FTS should have entry before delete")
309
310 a := NewTest()
311 a.DB = db
312
313 tx := db.Begin()
314 ret, err := a.DeleteNote(tx, user, note)
315 if err != nil {
316 tx.Rollback()
317 t.Fatal(errors.Wrap(err, "deleting note"))
318 }
319 tx.Commit()
320
321 var noteCount int64
322 var noteRecord database.Note
323 var userRecord database.User
324
325 testutils.MustExec(t, db.Model(&database.Note{}).Count(&noteCount), fmt.Sprintf("counting notes for test case %d", idx))
326 testutils.MustExec(t, db.First(&noteRecord), fmt.Sprintf("finding note for test case %d", idx))
327 testutils.MustExec(t, db.Where("id = ?", user.ID).First(&userRecord), fmt.Sprintf("finding user for test case %d", idx))

Callers

nothing calls this directly

Calls 10

InitMemoryDBFunction · 0.92
SetupUserDataFunction · 0.92
MustExecFunction · 0.92
EqualFunction · 0.92
NewTestFunction · 0.85
DeleteNoteMethod · 0.80
BeginMethod · 0.65
RollbackMethod · 0.65
CommitMethod · 0.65
UpdateMethod · 0.45

Tested by

no test coverage detected