diff --git a/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkExtensions.cs b/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkExtensions.cs index 44dc92d9cf..1396cd6ee5 100644 --- a/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkExtensions.cs +++ b/framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWorkExtensions.cs @@ -34,7 +34,7 @@ public static class UnitOfWorkExtensions { Check.NotNull(unitOfWork, nameof(unitOfWork)); - return unitOfWork.Items.FirstOrDefault(x => x.Key == key).As(); + return unitOfWork.Items.FirstOrDefault(x => x.Key == key).Value.As(); } public static TValue GetOrAddItem([NotNull] this IUnitOfWork unitOfWork, string key, Func factory) diff --git a/framework/test/Volo.Abp.Uow.Tests/Volo/Abp/Uow/UnitOfWorkExtensions_Tests.cs b/framework/test/Volo.Abp.Uow.Tests/Volo/Abp/Uow/UnitOfWorkExtensions_Tests.cs new file mode 100644 index 0000000000..6c88f70d9d --- /dev/null +++ b/framework/test/Volo.Abp.Uow.Tests/Volo/Abp/Uow/UnitOfWorkExtensions_Tests.cs @@ -0,0 +1,58 @@ +using Shouldly; +using Volo.Abp.Testing; +using Xunit; + +namespace Volo.Abp.Uow; + +public class UnitOfWorkExtensions_Tests : AbpIntegratedTest +{ + private readonly IUnitOfWorkManager _unitOfWorkManager; + + public UnitOfWorkExtensions_Tests() + { + _unitOfWorkManager = GetRequiredService(); + } + + [Fact] + public void AddItem() + { + var uow = _unitOfWorkManager.Begin(); + uow.AddItem("testKey", "testValue"); + + uow.Items.ShouldContainKey("testKey"); + uow.Items.ContainsValue("testValue"); + } + + [Fact] + public void GetItemOrDefault() + { + var uow = _unitOfWorkManager.Begin(); + uow.Items.Add("testKey", new NameValue("TestKey","TestValue")); + + uow.GetItemOrDefault("testKey").ShouldBeOfType(); + uow.GetItemOrDefault("testKey").Value.ShouldBe("TestValue"); + } + + [Fact] + public void GetOrAddItem() + { + var uow = _unitOfWorkManager.Begin(); + + var item = uow.GetOrAddItem("testKey", _ => new NameValue("TestKey", "TestValue")); + + item.Name.ShouldBe("TestKey"); + item.ShouldBeOfType(); + item.Value.ShouldBe("TestValue"); + } + + [Fact] + public void RemoveItem() + { + var uow = _unitOfWorkManager.Begin(); + uow.Items.Add("testKey", "testValue"); + + uow.RemoveItem("testKey"); + + uow.Items.ShouldNotContainKey("testKey"); + } +}