(t *testing.T)
| 423 | } |
| 424 | |
| 425 | func TestRemoveBook(t *testing.T) { |
| 426 | testCases := []struct { |
| 427 | yesFlag bool |
| 428 | }{ |
| 429 | { |
| 430 | yesFlag: false, |
| 431 | }, |
| 432 | { |
| 433 | yesFlag: true, |
| 434 | }, |
| 435 | } |
| 436 | |
| 437 | for _, tc := range testCases { |
| 438 | t.Run(fmt.Sprintf("--yes=%t", tc.yesFlag), func(t *testing.T) { |
| 439 | _, opts := setupTestEnv(t) |
| 440 | |
| 441 | // Setup |
| 442 | db, dbPath := database.InitTestFileDB(t) |
| 443 | testutils.Setup2(t, db) |
| 444 | |
| 445 | // Execute |
| 446 | if tc.yesFlag { |
| 447 | testutils.RunDnoteCmd(t, opts, binaryName, "--dbPath", dbPath, "remove", "-y", "js") |
| 448 | } else { |
| 449 | testutils.MustWaitDnoteCmd(t, opts, testutils.ConfirmRemoveBook, binaryName, "--dbPath", dbPath, "remove", "js") |
| 450 | } |
| 451 | |
| 452 | // Test |
| 453 | var noteCount, bookCount, jsNoteCount, linuxNoteCount int |
| 454 | database.MustScan(t, "counting books", db.QueryRow("SELECT count(*) FROM books"), &bookCount) |
| 455 | database.MustScan(t, "counting notes", db.QueryRow("SELECT count(*) FROM notes"), ¬eCount) |
| 456 | database.MustScan(t, "counting js notes", db.QueryRow("SELECT count(*) FROM notes WHERE book_uuid = ?", "js-book-uuid"), &jsNoteCount) |
| 457 | database.MustScan(t, "counting linux notes", db.QueryRow("SELECT count(*) FROM notes WHERE book_uuid = ?", "linux-book-uuid"), &linuxNoteCount) |
| 458 | |
| 459 | assert.Equalf(t, bookCount, 2, "book count mismatch") |
| 460 | assert.Equalf(t, noteCount, 3, "note count mismatch") |
| 461 | assert.Equal(t, jsNoteCount, 2, "js book should have 2 notes") |
| 462 | assert.Equal(t, linuxNoteCount, 1, "linux book book should have 1 note") |
| 463 | |
| 464 | var b1, b2 database.Book |
| 465 | var n1, n2, n3 database.Note |
| 466 | database.MustScan(t, "getting b1", |
| 467 | db.QueryRow("SELECT label, dirty, deleted, usn FROM books WHERE uuid = ?", "js-book-uuid"), |
| 468 | &b1.Label, &b1.Dirty, &b1.Deleted, &b1.USN) |
| 469 | database.MustScan(t, "getting b2", |
| 470 | db.QueryRow("SELECT label, dirty, deleted, usn FROM books WHERE uuid = ?", "linux-book-uuid"), |
| 471 | &b2.Label, &b2.Dirty, &b2.Deleted, &b2.USN) |
| 472 | database.MustScan(t, "getting n1", |
| 473 | db.QueryRow("SELECT uuid, body, added_on, dirty, deleted, usn FROM notes WHERE book_uuid = ? AND uuid = ?", "js-book-uuid", "f0d0fbb7-31ff-45ae-9f0f-4e429c0c797f"), |
| 474 | &n1.UUID, &n1.Body, &n1.AddedOn, &n1.Deleted, &n1.Dirty, &n1.USN) |
| 475 | database.MustScan(t, "getting n2", |
| 476 | db.QueryRow("SELECT uuid, body, added_on, dirty, deleted, usn FROM notes WHERE book_uuid = ? AND uuid = ?", "js-book-uuid", "43827b9a-c2b0-4c06-a290-97991c896653"), |
| 477 | &n2.UUID, &n2.Body, &n2.AddedOn, &n2.Deleted, &n2.Dirty, &n2.USN) |
| 478 | database.MustScan(t, "getting n3", |
| 479 | db.QueryRow("SELECT uuid, body, added_on, dirty, deleted, usn FROM notes WHERE book_uuid = ? AND uuid = ?", "linux-book-uuid", "3e065d55-6d47-42f2-a6bf-f5844130b2d2"), |
| 480 | &n3.UUID, &n3.Body, &n3.AddedOn, &n3.Deleted, &n3.Dirty, &n3.USN) |
| 481 | |
| 482 | assert.NotEqual(t, b1.Label, "js", "b1 label mismatch") |
nothing calls this directly
no test coverage detected