mirror of https://github.com/abpframework/abp.git
4 changed files with 163 additions and 23 deletions
@ -0,0 +1,87 @@ |
|||
using System.Threading.Tasks; |
|||
using Shouldly; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.FeatureManagement.Localization; |
|||
using Volo.Abp.Features; |
|||
using Volo.Abp.Localization; |
|||
using Volo.Abp.Validation.StringValues; |
|||
using Xunit; |
|||
|
|||
namespace Volo.Abp.FeatureManagement; |
|||
|
|||
public class FeatureDefinitionSerializer_Tests : FeatureManagementDomainTestBase |
|||
{ |
|||
private readonly IFeatureDefinitionSerializer _serializer; |
|||
|
|||
public FeatureDefinitionSerializer_Tests() |
|||
{ |
|||
_serializer = GetRequiredService<IFeatureDefinitionSerializer>(); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Serialize_Feature_Group_Definition() |
|||
{ |
|||
// Arrange
|
|||
|
|||
var context = new FeatureDefinitionContext(); |
|||
var group1 = CreateFeatureGroup1(context); |
|||
|
|||
// Act
|
|||
|
|||
var featureGroupRecord = await _serializer.SerializeAsync(group1); |
|||
|
|||
//Assert
|
|||
|
|||
featureGroupRecord.Name.ShouldBe("Group1"); |
|||
featureGroupRecord.DisplayName.ShouldBe("F:Group one"); |
|||
featureGroupRecord.GetProperty("CustomProperty1").ShouldBe("CustomValue1"); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Serialize_Complex_Feature_Definition() |
|||
{ |
|||
// Arrange
|
|||
|
|||
var context = new FeatureDefinitionContext(); |
|||
var group1 = CreateFeatureGroup1(context); |
|||
var feature1 = group1.AddFeature( |
|||
"Feature1", |
|||
"default", |
|||
new LocalizableString(typeof(AbpFeatureManagementResource), "Feature1"), |
|||
new LocalizableString(typeof(AbpFeatureManagementResource), "Feature1"), |
|||
new ToggleStringValueType(), |
|||
isVisibleToClients: true |
|||
) |
|||
.WithProviders("ProviderA", "ProviderB") |
|||
.WithProperty("CustomProperty2", "CustomValue2"); |
|||
|
|||
// Act
|
|||
|
|||
var featureRecord = await _serializer.SerializeAsync( |
|||
feature1, |
|||
group1 |
|||
); |
|||
|
|||
//Assert
|
|||
|
|||
featureRecord.Name.ShouldBe("Feature1"); |
|||
featureRecord.GroupName.ShouldBe("Group1"); |
|||
featureRecord.DisplayName.ShouldBe("L:AbpFeatureManagement,Feature1"); |
|||
featureRecord.ValueType.ShouldBe("{\"name\":\"ToggleStringValueType\",\"properties\":{},\"validator\":{\"name\":\"BOOLEAN\",\"properties\":{}}}"); |
|||
featureRecord.GetProperty("CustomProperty2").ShouldBe("CustomValue2"); |
|||
featureRecord.AllowedProviders.ShouldBe("ProviderA,ProviderB"); |
|||
} |
|||
|
|||
private static FeatureGroupDefinition CreateFeatureGroup1( |
|||
IFeatureDefinitionContext context) |
|||
{ |
|||
var group = context.AddGroup( |
|||
"Group1", |
|||
displayName: new FixedLocalizableString("Group one") |
|||
); |
|||
|
|||
group["CustomProperty1"] = "CustomValue1"; |
|||
|
|||
return group; |
|||
} |
|||
} |
|||
@ -0,0 +1,52 @@ |
|||
using System; |
|||
using Shouldly; |
|||
using Volo.Abp.Validation.StringValues; |
|||
using Xunit; |
|||
|
|||
namespace Volo.Abp.FeatureManagement; |
|||
|
|||
public class StringValueTypeSerializer_Tests : FeatureManagementDomainTestBase |
|||
{ |
|||
private readonly StringValueTypeSerializer _serializer; |
|||
|
|||
public StringValueTypeSerializer_Tests() |
|||
{ |
|||
_serializer = GetRequiredService<StringValueTypeSerializer>(); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Serialize_And_Deserialize_Test() |
|||
{ |
|||
// Arrange
|
|||
|
|||
var valueType = new SelectionStringValueType |
|||
{ |
|||
ItemSource = new StaticSelectionStringValueItemSource( |
|||
new LocalizableSelectionStringValueItem |
|||
{ |
|||
Value = "TestValue", |
|||
DisplayText = new LocalizableStringInfo("TestResourceName", "TestName") |
|||
}), |
|||
Validator = new AlwaysValidValueValidator() |
|||
}; |
|||
|
|||
// Act
|
|||
|
|||
var valueTypeJson = _serializer.Serialize(valueType); |
|||
|
|||
//Assert
|
|||
valueTypeJson.ShouldBe("{\"itemSource\":{\"items\":[{\"value\":\"TestValue\",\"displayText\":{\"resourceName\":\"TestResourceName\",\"name\":\"TestName\"}}]},\"name\":\"SelectionStringValueType\",\"properties\":{},\"validator\":{\"name\":\"NULL\",\"properties\":{}}}"); |
|||
|
|||
// Act
|
|||
var valueType2 = _serializer.Deserialize(valueTypeJson); |
|||
|
|||
//Assert
|
|||
valueType2.ShouldBeOfType<SelectionStringValueType>(); |
|||
valueType2.Validator.ShouldBeOfType<AlwaysValidValueValidator>(); |
|||
valueType2.As<SelectionStringValueType>().ItemSource.Items.ShouldBeOfType<LocalizableSelectionStringValueItem[]>(); |
|||
valueType2.As<SelectionStringValueType>().ItemSource.Items.ShouldContain(x => |
|||
x.Value == "TestValue" && x.DisplayText.ResourceName == "TestResourceName" && |
|||
x.DisplayText.Name == "TestName"); |
|||
} |
|||
|
|||
} |
|||
Loading…
Reference in new issue