(t *testing.T)
| 268 | } |
| 269 | |
| 270 | func 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(¬e), 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(¬eCount), fmt.Sprintf("counting notes for test case %d", idx)) |
| 326 | testutils.MustExec(t, db.First(¬eRecord), 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)) |
nothing calls this directly
no test coverage detected