diff --git a/src/Umbraco.Core/Deploy/ArtifactBase.cs b/src/Umbraco.Core/Deploy/ArtifactBase.cs index 7c6f4c1814..25457adcdf 100644 --- a/src/Umbraco.Core/Deploy/ArtifactBase.cs +++ b/src/Umbraco.Core/Deploy/ArtifactBase.cs @@ -1,22 +1,18 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; -using System.Runtime.Serialization; namespace Umbraco.Cms.Core.Deploy { /// /// Provides a base class to all artifacts. /// - [DataContract] public abstract class ArtifactBase : IArtifact where TUdi : Udi { protected ArtifactBase(TUdi udi, IEnumerable dependencies = null) { - if (udi == null) - throw new ArgumentNullException("udi"); - Udi = udi; + Udi = udi ?? throw new ArgumentNullException("udi"); Name = Udi.ToString(); Dependencies = dependencies ?? Enumerable.Empty(); @@ -24,38 +20,31 @@ namespace Umbraco.Cms.Core.Deploy } private readonly Lazy _checksum; + private IEnumerable _dependencies; protected abstract string GetChecksum(); #region Abstract implementation of IArtifactSignature - Udi IArtifactSignature.Udi - { - get { return Udi; } - } + Udi IArtifactSignature.Udi => Udi; - [DataMember] public TUdi Udi { get; set; } - [IgnoreDataMember] - public string Checksum - { - get { return _checksum.Value; } - } + public string Checksum => _checksum.Value; + + public bool ShouldSerializeChecksum() => false; - [DataMember] public IEnumerable Dependencies { - get { return _dependencies; } - set { _dependencies = value.OrderBy(x => x.Udi); } + get => _dependencies; + set => _dependencies = value.OrderBy(x => x.Udi); } #endregion - [DataMember] public string Name { get; set; } - [DataMember] + public string Alias { get; set; } } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Deploy/ArtifactBaseTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Deploy/ArtifactBaseTests.cs new file mode 100644 index 0000000000..1a2ffa8011 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Deploy/ArtifactBaseTests.cs @@ -0,0 +1,41 @@ +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; +using System.Collections.Generic; +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); + } + + private class TestArtifact : ArtifactBase + { + public TestArtifact(GuidUdi udi, IEnumerable dependencies = null) : base(udi, dependencies) + { + } + + protected override string GetChecksum() => "test checksum value"; + } + } +}