// Copyright (c) Umbraco. // See LICENSE for more details. using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; using NUnit.Framework; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Deploy; namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Deploy; [TestFixture] public class ArtifactBaseTests { [Test] public void CanSerialize() { var udi = new GuidUdi("test", Guid.Parse("3382d5433b5749d08919bc9961422a1f")); var artifact = new TestArtifact(udi, new List()) { Name = "Test Name", Alias = "testAlias" }; var serialized = JsonConvert.SerializeObject(artifact); var expected = "{\"Udi\":\"umb://test/3382d5433b5749d08919bc9961422a1f\",\"Dependencies\":[],\"Name\":\"Test Name\",\"Alias\":\"testAlias\"}"; Assert.AreEqual(expected, serialized); } [Test] public void Dependencies_Are_Correctly_Ordered() { // This test was introduced following: https://github.com/umbraco/Umbraco.Deploy.Issues/issues/72 to verify // that consistent ordering rules are used across platforms. var udi = new GuidUdi("test", Guid.Parse("3382d5433b5749d08919bc9961422a1f")); var artifact = new TestArtifact(udi, new List()) { Name = "Test Name", Alias = "testAlias" }; var dependencies = new ArtifactDependencyCollection(); var dependencyUdi1 = new GuidUdi("template", Guid.Parse("d4651496fad24c1290a53ea4d55d945b")); dependencies.Add(new ArtifactDependency(dependencyUdi1, true, ArtifactDependencyMode.Exist)); var dependencyUdi2 = new StringUdi(Constants.UdiEntityType.TemplateFile, "TestPage.cshtml"); dependencies.Add(new ArtifactDependency(dependencyUdi2, true, ArtifactDependencyMode.Exist)); artifact.Dependencies = dependencies; Assert.AreEqual( "umb://template-file/TestPage.cshtml,umb://template/d4651496fad24c1290a53ea4d55d945b", string.Join(",", artifact.Dependencies.Select(x => x.Udi.ToString()))); } private class TestArtifact : ArtifactBase { public TestArtifact(GuidUdi udi, IEnumerable dependencies = null) : base(udi, dependencies) { } protected override string GetChecksum() => "test checksum value"; } }