public async Task FindAsync_FilterTests(bool isAdmin, DateTime?minDate, DateTime?maxDate, bool sameUser, int expectedResultsCount)
        {
            // Arrange
            using var dbContext = CreateDbContext();
            var user = await CreateTestUserAsync(dbContext);

            var anotherUser = await CreateTestUserAsync(dbContext);

            await CreateWorkEntry(dbContext, user.Id, entry => entry.Date        = new DateTime(2020, 3, 5));
            await CreateWorkEntry(dbContext, user.Id, entry => entry.Date        = new DateTime(2020, 3, 10));
            await CreateWorkEntry(dbContext, user.Id, entry => entry.Date        = new DateTime(2020, 3, 17));
            await CreateWorkEntry(dbContext, anotherUser.Id, entry => entry.Date = new DateTime(2020, 3, 15));

            var userContextAccessorMock = new Mock <IUserContextAccessor>();

            userContextAccessorMock.Setup(m => m.GetUserId()).Returns(user.Id);
            userContextAccessorMock.Setup(m => m.IsAdminUser()).Returns(isAdmin);

            var workEntriesService = new WorkEntriesService(dbContext, Mock.Of <IDbErrorHandler>(), userContextAccessorMock.Object);

            // Act
            var entries = await workEntriesService.FindAsync(sameUser?user.Id : anotherUser.Id, minDate, maxDate);

            // Assert
            Assert.Equal(expectedResultsCount, entries.Count);
        }
        public async Task FindAsync_EntriesExist_ReturnsWorkEntry()
        {
            // Arrange
            using var dbContext = CreateDbContext();
            var user = await CreateTestUserAsync(dbContext);

            var entry = await CreateWorkEntry(dbContext, user.Id);

            var entry1 = await CreateWorkEntry(dbContext, user.Id, entry => entry.Date = DateTime.Now.AddDays(-1));

            var userContextAccessorMock = new Mock <IUserContextAccessor>();

            userContextAccessorMock.Setup(m => m.GetUserId()).Returns(user.Id);
            userContextAccessorMock.Setup(m => m.IsAdminUser()).Returns(false);

            var workEntriesService = new WorkEntriesService(dbContext, Mock.Of <IDbErrorHandler>(), userContextAccessorMock.Object);

            // Act
            var entries = await workEntriesService.FindAsync(user.Id);

            // Assert
            Assert.Collection(entries,
                              resultEntry => AssertEqual(entry1, resultEntry),
                              resultEntry => AssertEqual(entry, resultEntry)
                              );
        }