Added ObjectExtensionManager_Tests

pull/3401/head
Halil İbrahim Kalkan 6 years ago
parent 01d2ea0b00
commit 3ba4accc59

@ -0,0 +1,3 @@
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("Volo.Abp.ObjectExtending.Tests")]

@ -65,5 +65,14 @@ namespace Volo.Abp.ObjectExtending
{
return Properties.Values.ToImmutableList();
}
[CanBeNull]
public virtual ObjectExtensionPropertyInfo GetPropertyOrNull(
[NotNull] string propertyName)
{
Check.NotNullOrEmpty(propertyName, nameof(propertyName));
return Properties.GetOrDefault(propertyName);
}
}
}

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using JetBrains.Annotations;
using Volo.Abp.Data;
@ -11,7 +12,7 @@ namespace Volo.Abp.ObjectExtending
protected Dictionary<Type, ObjectExtensionInfo> ObjectsExtensions { get; }
protected ObjectExtensionManager()
protected internal ObjectExtensionManager()
{
ObjectsExtensions = new Dictionary<Type, ObjectExtensionInfo>();
}
@ -55,5 +56,11 @@ namespace Volo.Abp.ObjectExtending
return ObjectsExtensions.GetOrDefault(type);
}
[NotNull]
public virtual ImmutableList<ObjectExtensionInfo> GetExtendedObjects()
{
return ObjectsExtensions.Values.ToImmutableList();
}
}
}

@ -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…
Cancel
Save