using Bit.Core.AdminConsole.Errors; using Bit.Core.Models.Commands; using Bit.Test.Common.AutoFixture.Attributes; using Xunit; namespace Bit.Core.Test.Models.Commands; public class CommandResultTests { public class TestItem { public Guid Id { get; set; } public string Value { get; set; } } public CommandResult BulkAction(IEnumerable items) { var itemList = items.ToList(); var successfulItems = items.Where(x => x.Value == "SuccessfulRequest").ToArray(); var failedItems = itemList.Except(successfulItems).ToArray(); var notFound = failedItems.First(x => x.Value == "Failed due to not found"); var invalidPermissions = failedItems.First(x => x.Value == "Failed due to invalid permissions"); var notFoundError = new RecordNotFoundError(notFound); var insufficientPermissionsError = new InsufficientPermissionsError(invalidPermissions); return new Partial(successfulItems.ToArray(), [notFoundError, insufficientPermissionsError]); } [Theory] [BitAutoData] public void Partial_CommandResult_BulkRequestWithSuccessAndFailures(Guid successId1, Guid failureId1, Guid failureId2) { var listOfRecords = new List { new TestItem() { Id = successId1, Value = "SuccessfulRequest" }, new TestItem() { Id = failureId1, Value = "Failed due to not found" }, new TestItem() { Id = failureId2, Value = "Failed due to invalid permissions" } }; var result = BulkAction(listOfRecords); Assert.IsType>(result); var failures = (result as Partial).Failures.ToArray(); var success = (result as Partial).Successes.First(); Assert.Equal(listOfRecords.First(), success); Assert.Equal(2, failures.Length); } }