mirror of https://github.com/abpframework/abp.git
4 changed files with 83 additions and 1 deletions
@ -0,0 +1,3 @@ |
|||
using System.Runtime.CompilerServices; |
|||
|
|||
[assembly: InternalsVisibleTo("Volo.Abp.ObjectExtending.Tests")] |
|||
@ -0,0 +1,63 @@ |
|||
using System.Linq; |
|||
using Shouldly; |
|||
using Xunit; |
|||
|
|||
namespace Volo.Abp.ObjectExtending |
|||
{ |
|||
public class ObjectExtensionManager_Tests |
|||
{ |
|||
private readonly ObjectExtensionManager _objectExtensionManager; |
|||
|
|||
public ObjectExtensionManager_Tests() |
|||
{ |
|||
_objectExtensionManager = new ObjectExtensionManager(); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Should_Not_Add_Same_Property_Multiple_Times() |
|||
{ |
|||
_objectExtensionManager |
|||
.AddOrUpdateProperty<MyExtensibleObject, string>("TestProp") |
|||
.AddOrUpdateProperty<MyExtensibleObject, string>("TestProp"); |
|||
|
|||
var objectExtension = _objectExtensionManager.GetOrNull<MyExtensibleObject>(); |
|||
objectExtension.ShouldNotBeNull(); |
|||
|
|||
var properties = objectExtension.GetProperties(); |
|||
properties.Count.ShouldBe(1); |
|||
properties.FirstOrDefault(p => p.Name == "TestProp").ShouldNotBeNull(); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Should_Update_Property_Configuration() |
|||
{ |
|||
_objectExtensionManager |
|||
.AddOrUpdateProperty<MyExtensibleObject, string>( |
|||
"TestProp", |
|||
options => |
|||
{ |
|||
options.Configuration["TestConfig1"] = "TestConfig1-Value"; |
|||
} |
|||
).AddOrUpdateProperty<MyExtensibleObject, string>( |
|||
"TestProp", |
|||
options => |
|||
{ |
|||
options.Configuration["TestConfig2"] = "TestConfig2-Value"; |
|||
} |
|||
); |
|||
|
|||
var objectExtension = _objectExtensionManager.GetOrNull<MyExtensibleObject>(); |
|||
objectExtension.ShouldNotBeNull(); |
|||
|
|||
var property = objectExtension.GetPropertyOrNull("TestProp"); |
|||
property.ShouldNotBeNull(); |
|||
property.Configuration["TestConfig1"].ShouldBe("TestConfig1-Value"); |
|||
property.Configuration["TestConfig2"].ShouldBe("TestConfig2-Value"); |
|||
} |
|||
|
|||
private class MyExtensibleObject : ExtensibleObject |
|||
{ |
|||
|
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue