// ========================================================================== // NamedIdTests.cs // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex Group // All rights reserved. // ========================================================================== using System; using Squidex.Infrastructure.Json; using Squidex.Infrastructure.TestHelpers; using Xunit; // ReSharper disable RedundantCast namespace Squidex.Infrastructure { public class NamedIdTests { [Fact] public void Should_instantiate_token() { var id = Guid.NewGuid(); var namedId = new NamedId(id, "my-name"); Assert.Equal(id, namedId.Id); Assert.Equal("my-name", namedId.Name); } [Fact] public void Should_convert_named_id_to_string() { var id = Guid.NewGuid(); var namedId = new NamedId(id, "my-name"); Assert.Equal($"{id},my-name", namedId.ToString()); } [Fact] public void Should_make_correct_equal_comparisons() { var id1 = Guid.NewGuid(); var id2 = Guid.NewGuid(); var token1a = new NamedId(id1, "my-name1"); var token1b = new NamedId(id1, "my-name1"); var token1c = new NamedId(id1, "my-name2"); var token2a = new NamedId(id2, "my-name1"); Assert.True(token1a.Equals(token1b)); Assert.False(token1a.Equals(token2a)); Assert.False(token1a.Equals(token1c)); } [Fact] public void Should_make_correct_object_equal_comparisons() { var id1 = Guid.NewGuid(); var id2 = Guid.NewGuid(); object token1a = new NamedId(id1, "my-name1"); object token1b = new NamedId(id1, "my-name1"); object token1c = new NamedId(id1, "my-name2"); object token2a = new NamedId(id2, "my-name1"); Assert.True(token1a.Equals(token1b)); Assert.False(token1a.Equals(token2a)); Assert.False(token1a.Equals(token1c)); } [Fact] public void Should_provide_correct_hash_codes() { var id1 = Guid.NewGuid(); var id2 = Guid.NewGuid(); object token1a = new NamedId(id1, "my-name1"); object token1b = new NamedId(id1, "my-name1"); object token1c = new NamedId(id1, "my-name2"); object token2a = new NamedId(id2, "my-name1"); Assert.Equal(token1a.GetHashCode(), token1b.GetHashCode()); Assert.NotEqual(token1a.GetHashCode(), token2a.GetHashCode()); Assert.NotEqual(token1a.GetHashCode(), token1c.GetHashCode()); } [Fact] public void Should_serialize_and_deserialize_null_guid_token() { JsonHelper.SerializeAndDeserialize>(null, new NamedGuidIdConverter()); } [Fact] public void Should_serialize_and_deserialize_valid_guid_token() { new NamedId(Guid.NewGuid(), "my-name").SerializeAndDeserialize(new NamedGuidIdConverter()); } [Fact] public void Should_serialize_and_deserialize_null_long_token() { JsonHelper.SerializeAndDeserialize>(null, new NamedLongIdConverter()); } [Fact] public void Should_serialize_and_deserialize_valid_long_token() { new NamedId(123, "my-name").SerializeAndDeserialize(new NamedLongIdConverter()); } [Fact] public void Should_serialize_and_deserialize_null_string_token() { JsonHelper.SerializeAndDeserialize>(null, new NamedStringIdConverter()); } [Fact] public void Should_serialize_and_deserialize_valid_string_token() { new NamedId(Guid.NewGuid().ToString(), "my-name").SerializeAndDeserialize(new NamedStringIdConverter()); } [Fact] public void Should_throw_exception_if_string_id_is_not_valid() { JsonHelper.DoesNotDeserialize>("123", new NamedStringIdConverter()); } [Fact] public void Should_throw_exception_if_long_id_is_not_valid() { JsonHelper.DoesNotDeserialize>("123", new NamedLongIdConverter()); JsonHelper.DoesNotDeserialize>("invalid-long,name", new NamedLongIdConverter()); } [Fact] public void Should_throw_exception_if_guid_id_is_not_valid() { JsonHelper.DoesNotDeserialize>("123", new NamedGuidIdConverter()); JsonHelper.DoesNotDeserialize>("invalid-guid,name", new NamedGuidIdConverter()); } } }