Headless CMS and Content Managment Hub
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

70 lines
2.1 KiB

// ==========================================================================
// AppContributorsTests.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using FluentAssertions;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Squidex.Domain.Apps.Core.Apps;
using Xunit;
namespace Squidex.Domain.Apps.Core.Model.Apps
{
public class AppContributorsTests
{
private readonly JsonSerializer serializer = TestData.DefaultSerializer();
private readonly AppContributors sut = new AppContributors();
[Fact]
public void Should_assign_new_contributor()
{
sut.Assign("1", AppContributorPermission.Developer);
sut.Assign("2", AppContributorPermission.Editor);
Assert.Equal(AppContributorPermission.Developer, sut["1"]);
Assert.Equal(AppContributorPermission.Editor, sut["2"]);
}
[Fact]
public void Should_replace_contributor_if_already_exists()
{
sut.Assign("1", AppContributorPermission.Developer);
sut.Assign("1", AppContributorPermission.Owner);
Assert.Equal(AppContributorPermission.Owner, sut["1"]);
}
[Fact]
public void Should_remove_contributor()
{
sut.Assign("1", AppContributorPermission.Developer);
sut.Remove("1");
Assert.Empty(sut);
}
[Fact]
public void Should_do_nothing_if_contributor_to_remove_not_found()
{
sut.Remove("2");
Assert.Empty(sut);
}
[Fact]
public void Should_serialize_and_deserialize()
{
sut.Assign("1", AppContributorPermission.Developer);
sut.Assign("2", AppContributorPermission.Editor);
sut.Assign("3", AppContributorPermission.Owner);
var serialized = JToken.FromObject(sut, serializer).ToObject<AppContributors>(serializer);
serialized.ShouldBeEquivalentTo(sut);
}
}
}