public async Task UpdateSavedFilter_AsAnonymous_ShouldReturnUnauthorized()
 => await PersonsControllerTestsHelper.UpdateSavedFilterAsync(
     UserType.Anonymous,
     TestFactory.UnknownPlant,
     1,
     Guid.NewGuid().ToString(),
     Guid.NewGuid().ToString(),
     false,
     TestFactory.AValidRowVersion,
     HttpStatusCode.Unauthorized);
 public async Task UpdateSavedFilter_AsHacker_ShouldReturnForbidden_WhenPermissionMissing()
 => await PersonsControllerTestsHelper.UpdateSavedFilterAsync(
     UserType.Hacker,
     TestFactory.PlantWithAccess,
     1,
     Guid.NewGuid().ToString(),
     Guid.NewGuid().ToString(),
     false,
     TestFactory.AValidRowVersion,
     HttpStatusCode.Forbidden);
 public async Task UpdateSavedFilter_AsViewer_ShouldReturnBadRequest_WhenUnknownId() =>
 await PersonsControllerTestsHelper.UpdateSavedFilterAsync(
     UserType.Viewer,
     TestFactory.PlantWithAccess,
     9876,
     Guid.NewGuid().ToString(),
     Guid.NewGuid().ToString(),
     false,
     TestFactory.AValidRowVersion,
     HttpStatusCode.BadRequest,
     "Saved filter with this ID does not exist!");
 public async Task UpdateSavedFilter_AsHacker_ShouldReturnBadRequest_WhenUnknownPlant()
 => await PersonsControllerTestsHelper.UpdateSavedFilterAsync(
     UserType.Hacker,
     TestFactory.UnknownPlant,
     1,
     Guid.NewGuid().ToString(),
     Guid.NewGuid().ToString(),
     false,
     TestFactory.AValidRowVersion,
     HttpStatusCode.BadRequest,
     "is not a valid plant");
        public async Task UpdateSavedFilter_AsViewer_ShouldReturnConflict_WhenWrongRowVersion()
        {
            var id = await PersonsControllerTestsHelper.CreateSavedFilterAsync(
                UserType.Viewer,
                TestFactory.PlantWithAccess,
                Guid.NewGuid().ToString(),
                Guid.NewGuid().ToString(),
                true);

            // Act
            await PersonsControllerTestsHelper.UpdateSavedFilterAsync(
                UserType.Viewer,
                TestFactory.PlantWithAccess,
                id,
                Guid.NewGuid().ToString(),
                Guid.NewGuid().ToString(),
                false,
                TestFactory.WrongButValidRowVersion,
                HttpStatusCode.Conflict);
        }
        public async Task UpdateSavedFilter_AsViewer_ShouldUpdateFilter()
        {
            var id = await PersonsControllerTestsHelper.CreateSavedFilterAsync(
                UserType.Viewer,
                TestFactory.PlantWithAccess,
                Guid.NewGuid().ToString(),
                Guid.NewGuid().ToString(),
                true);

            var savedFilters = await PersonsControllerTestsHelper.GetSavedFiltersInProjectAsync(
                UserType.Viewer,
                TestFactory.PlantWithAccess,
                null);

            var savedFilter = savedFilters.Single(sf => sf.Id == id);

            var newTitle    = Guid.NewGuid().ToString();
            var newCriteria = Guid.NewGuid().ToString();
            // Act
            await PersonsControllerTestsHelper.UpdateSavedFilterAsync(
                UserType.Viewer,
                TestFactory.PlantWithAccess,
                savedFilter.Id,
                newTitle,
                newCriteria,
                true,
                savedFilter.RowVersion);

            // Assert
            var updatedFilters = await PersonsControllerTestsHelper.GetSavedFiltersInProjectAsync(
                UserType.Viewer,
                TestFactory.PlantWithAccess,
                null);

            var updatedFilter = updatedFilters.Single(sf => sf.Id == id);

            Assert.IsNotNull(updatedFilter);
            Assert.AreNotEqual(updatedFilter.RowVersion, savedFilter.RowVersion);
            Assert.AreEqual(newTitle, updatedFilter.Title);
            Assert.AreEqual(newCriteria, updatedFilter.Criteria);
        }