(t *testing.T)
| 29 | ) |
| 30 | |
| 31 | func TestCreateNote(t *testing.T) { |
| 32 | serverTime := time.Date(2017, time.March, 14, 21, 15, 0, 0, time.UTC) |
| 33 | |
| 34 | ts1 := time.Date(2018, time.November, 12, 10, 11, 0, 0, time.UTC).UnixNano() |
| 35 | ts2 := time.Date(2018, time.November, 15, 0, 1, 10, 0, time.UTC).UnixNano() |
| 36 | |
| 37 | testCases := []struct { |
| 38 | userUSN int |
| 39 | addedOn *int64 |
| 40 | editedOn *int64 |
| 41 | expectedUSN int |
| 42 | expectedAddedOn int64 |
| 43 | expectedEditedOn int64 |
| 44 | }{ |
| 45 | { |
| 46 | userUSN: 8, |
| 47 | addedOn: nil, |
| 48 | editedOn: nil, |
| 49 | expectedUSN: 9, |
| 50 | expectedAddedOn: serverTime.UnixNano(), |
| 51 | expectedEditedOn: 0, |
| 52 | }, |
| 53 | { |
| 54 | userUSN: 102229, |
| 55 | addedOn: &ts1, |
| 56 | editedOn: nil, |
| 57 | expectedUSN: 102230, |
| 58 | expectedAddedOn: ts1, |
| 59 | expectedEditedOn: 0, |
| 60 | }, |
| 61 | { |
| 62 | userUSN: 8099, |
| 63 | addedOn: &ts1, |
| 64 | editedOn: &ts2, |
| 65 | expectedUSN: 8100, |
| 66 | expectedAddedOn: ts1, |
| 67 | expectedEditedOn: ts2, |
| 68 | }, |
| 69 | } |
| 70 | |
| 71 | for idx, tc := range testCases { |
| 72 | func() { |
| 73 | // Create a new clock for each test case to avoid race conditions in parallel tests |
| 74 | mockClock := clock.NewMock() |
| 75 | mockClock.SetNow(serverTime) |
| 76 | |
| 77 | db := testutils.InitMemoryDB(t) |
| 78 | |
| 79 | user := testutils.SetupUserData(db, "user@test.com", "password123") |
| 80 | testutils.MustExec(t, db.Model(&user).Update("max_usn", tc.userUSN), fmt.Sprintf("preparing user max_usn for test case %d", idx)) |
| 81 | fmt.Println(user) |
| 82 | |
| 83 | anotherUser := testutils.SetupUserData(db, "another@test.com", "password123") |
| 84 | testutils.MustExec(t, db.Model(&anotherUser).Update("max_usn", 55), fmt.Sprintf("preparing user max_usn for test case %d", idx)) |
| 85 | |
| 86 | b1 := database.Book{UserID: user.ID, Label: "js", Deleted: false} |
| 87 | testutils.MustExec(t, db.Save(&b1), fmt.Sprintf("preparing b1 for test case %d", idx)) |
| 88 |
nothing calls this directly
no test coverage detected