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.
 
 
 
 
 

237 lines
7.2 KiB

// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using Squidex.Domain.Apps.Core.Apps;
using Squidex.Domain.Apps.Core.Assets;
using Squidex.Domain.Apps.Core.TestHelpers;
using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Model.Apps;
#pragma warning disable SA1310 // Field names must not contain underscore
public class AppTests
{
private readonly App app_0 = new App();
[Fact]
public void Should_not_annotate_with_null_label()
{
var app_1 = app_0.Annotate(label: null);
Assert.Same(app_1, app_0);
}
[Fact]
public void Should_annotate_with_label()
{
var newLabel = "My App";
var app_1 = app_0.Annotate(label: newLabel);
var app_2 = app_1.Annotate(label: newLabel);
Assert.NotSame(app_0, app_1);
Assert.Equal(newLabel, app_1.Label);
Assert.Equal(newLabel, app_2.Label);
Assert.Same(app_1, app_2);
}
[Fact]
public void Should_not_annotate_with_null_description()
{
var app_1 = app_0.Annotate(description: null);
Assert.Same(app_1, app_0);
}
[Fact]
public void Should_annotate_with_description()
{
var newDescription = "My Description";
var app_1 = app_0.Annotate(description: newDescription);
var app_2 = app_1.Annotate(description: newDescription);
Assert.NotSame(app_0, app_1);
Assert.Equal(newDescription, app_1.Description);
Assert.Equal(newDescription, app_2.Description);
Assert.Same(app_1, app_2);
}
[Fact]
public void Should_transer()
{
var newTeamId = DomainId.NewGuid();
var app_1 = app_0.Transfer(newTeamId);
var app_2 = app_1.Transfer(newTeamId);
Assert.NotSame(app_0, app_1);
Assert.Equal(newTeamId, app_1.TeamId);
Assert.Equal(newTeamId, app_2.TeamId);
Assert.Same(app_1, app_2);
}
[Fact]
public void Should_update_plan()
{
var newPlan1 = new AssignedPlan(RefToken.User("me"), "Premium");
var newPlan2 = new AssignedPlan(RefToken.User("me"), "Premium");
var app_1 = app_0.ChangePlan(newPlan1);
var app_2 = app_1.ChangePlan(newPlan2);
Assert.NotSame(app_0, app_1);
Assert.Equal(newPlan1, app_1.Plan);
Assert.Equal(newPlan2, app_2.Plan);
Assert.Same(app_1, app_2);
}
[Fact]
public void Should_update_image()
{
var newImage1 = new AppImage("image/png", "42");
var newImage2 = new AppImage("image/png", "42");
var app_1 = app_0.UpdateImage(newImage1);
var app_2 = app_1.UpdateImage(newImage2);
Assert.NotSame(app_0, app_1);
Assert.Equal(newImage1, app_1.Image);
Assert.Equal(newImage1, app_2.Image);
Assert.Same(app_1, app_2);
}
[Fact]
public void Should_update_settings()
{
var newSettings1 = new AppSettings { HideDateTimeModeButton = true };
var newSettings2 = new AppSettings { HideDateTimeModeButton = true };
var app_1 = app_0.UpdateSettings(newSettings1);
var app_2 = app_1.UpdateSettings(newSettings2);
Assert.NotSame(app_0, app_1);
Assert.Equal(newSettings1, app_1.Settings);
Assert.Equal(newSettings1, app_2.Settings);
Assert.Same(app_1, app_2);
}
[Fact]
public void Should_update_schema_scripts()
{
var newScripts1 = new AssetScripts { Query = "query" };
var newScripts2 = new AssetScripts { Query = "query" };
var app_1 = app_0.UpdateAssetScripts(newScripts1);
var app_2 = app_1.UpdateAssetScripts(newScripts2);
Assert.NotSame(app_0, app_1);
Assert.Equal(newScripts1, app_1.AssetScripts);
Assert.Equal(newScripts1, app_2.AssetScripts);
Assert.Same(app_1, app_2);
}
[Fact]
public void Should_update_contributors()
{
var app_1 = app_0.UpdateContributors(true, (_, c) => c.Assign("me", Role.Owner));
var app_2 = app_1.UpdateContributors(true, (_, c) => c.Assign("me", Role.Owner));
Assert.NotSame(app_0, app_1);
Assert.Single(app_1.Contributors);
Assert.Single(app_2.Contributors);
Assert.Same(app_1, app_2);
}
[Fact]
public void Should_update_clients()
{
var newClient = "MyClient";
var app_1 = app_0.UpdateClients(true, (_, c) => c.Add(newClient, newClient));
var app_2 = app_1.UpdateClients(true, (_, c) => c.Add(newClient, newClient));
Assert.NotSame(app_0, app_1);
Assert.True(app_1.Clients.ContainsKey(newClient));
Assert.True(app_2.Clients.ContainsKey(newClient));
Assert.Same(app_1, app_2);
}
[Fact]
public void Should_update_languages()
{
var newLanguage = Language.DE;
var app_1 = app_0.UpdateLanguages(true, (_, l) => l.Set(newLanguage));
var app_2 = app_1.UpdateLanguages(true, (_, l) => l.Set(newLanguage));
Assert.NotSame(app_0, app_1);
Assert.True(app_1.Languages.Contains(newLanguage));
Assert.True(app_2.Languages.Contains(newLanguage));
Assert.Same(app_1, app_2);
}
[Fact]
public void Should_update_roles()
{
var newRole = "MyRole";
var app_1 = app_0.UpdateRoles(true, (_, r) => r.Add(newRole));
var app_2 = app_1.UpdateRoles(true, (_, r) => r.Add(newRole));
Assert.NotSame(app_0, app_1);
Assert.Contains(app_1.Roles.Custom, x => x.Name == newRole);
Assert.Contains(app_2.Roles.Custom, x => x.Name == newRole);
Assert.Same(app_1, app_2);
}
[Fact]
public void Should_update_workflows()
{
var newWorkflowName = "MyWorkflow";
var newWorkflowId = DomainId.NewGuid();
var app_1 = app_0.UpdateWorkflows(true, (_, r) => r.Add(newWorkflowId, newWorkflowName));
var app_2 = app_1.UpdateWorkflows(true, (_, r) => r.Add(newWorkflowId, newWorkflowName));
Assert.NotSame(app_0, app_1);
Assert.True(app_1.Workflows.ContainsKey(newWorkflowId));
Assert.True(app_2.Workflows.ContainsKey(newWorkflowId));
Assert.Same(app_1, app_2);
}
[Fact]
public void Should_deserialize_old_state()
{
var original = TestUtils.DefaultSerializer.Deserialize<App>(File.ReadAllText("Model/Apps/App.json"));
var deserialized = TestUtils.DefaultSerializer.Deserialize<App>(File.ReadAllText("Model/Apps/App_Old.json"));
deserialized.Should().BeEquivalentTo(original);
}
[Fact]
public void Should_deserialize_state()
{
var json = File.ReadAllText("Model/Apps/App.json");
var deserialized = TestUtils.DefaultSerializer.Deserialize<App>(json);
Assert.NotNull(deserialized);
}
[Fact]
public void Should_serialize_deserialize_state()
{
var json = File.ReadAllText("Model/Apps/App.json").CleanJson();
var serialized = TestUtils.SerializeWithoutNulls(TestUtils.DefaultSerializer.Deserialize<App>(json));
Assert.Equal(json, serialized);
}
}