Exemple #1
0
        public static async Task RegisteredType_AdditionalLink(
            Guid id,
            Guid parentId,
            UnequalNonNullPair <NonEmptyString> routes,
            JsonSerializerSettings serializerSettings)
        {
            if (serializerSettings is null)
            {
                throw new ArgumentNullException(nameof(serializerSettings));
            }

            var dto = new Registered
            {
                Id       = id,
                ParentId = parentId,
            };

            var(route, parentRoute) = routes;
            var builder = new TransformationMap.Builder <Registered>(r => Const(new Uri($"https://example.invalid/registered/{r.Id}")));
            ITransformationMap <Registered> transformationMap = builder;

            _ = transformationMap.Link("up", r => Const(new Uri($"https://example.invalid/parent/{r.ParentId}")));
            var map = new Dictionary <Type, ITransformationInstructions>
            {
                [typeof(Registered)] = builder,
            };

            await using var serviceProvider = new ServiceCollection()
                                              .AddScoped <ILinkBuilder <Constant>, LinkBuilder.Constant>()
                                              .BuildServiceProvider();
            var repo = new HalRepository(map, serviceProvider);

            serializerSettings.Converters.Add(new LinkCollection.Converter());
            var sut = new HalJsonOutputFormatter(serializerSettings, ArrayPool <char> .Shared, new MvcOptions(), repo);

            using var writer = new StringWriter();
            var context = new OutputFormatterWriteContext(
                new DefaultHttpContext(),
                (_, _) => writer,
                typeof(Registered),
                dto);

            await sut.WriteResponseBodyAsync(context, new UTF8Encoding(encoderShouldEmitUTF8Identifier : false)).ConfigureAwait(false);

            var actual = JsonConvert.DeserializeObject <HollowHal>(writer.ToString(), serializerSettings);

            Assert.NotNull(actual);
            Assert.Empty(actual.Embedded);
            Assert.NotNull(actual.Links);
            Assert.Equal(2, actual.Links.Count);
            var self = Assert.Contains("self", actual.Links);

            Assert.NotNull(self);
            Assert.Equal($"https://example.invalid/registered/{id}", self.Href);
            var parent = Assert.Contains("up", actual.Links);

            Assert.NotNull(parent);
            Assert.Equal($"https://example.invalid/parent/{parentId}", parent.Href);
        }
Exemple #2
0
        public static void ObjectEquals_SomeSome_SameType_DifferentValue(UnequalNonNullPair <string> pair)
        {
            var left  = Option.From(pair.Left);
            var right = Option.From(pair.Right);

            Assert.False(left.Equals(right));
            Assert.False(right.Equals(left));
        }
Exemple #3
0
        public static void OperatorLogicalOr_SomeSome(UnequalNonNullPair <string> pair)
        {
            var left  = Option.From(pair.Left);
            var right = Option.From(pair.Right);

            Assert.Equal(left, left || right);
            Assert.Equal(right, right || left);
        }
Exemple #4
0
        public static void OperatorNotEquals_SomeSome_DifferentValue(UnequalNonNullPair <string> pair)
        {
            var left  = Option.From(pair.Left);
            var right = Option.From(pair.Right);

            Assert.True(left != right);
            Assert.True(right != left);
        }
Exemple #5
0
        public static void NamedBitwiseOr_SomeSome(UnequalNonNullPair <string> pair)
        {
            var left  = Option.From(pair.Left);
            var right = Option.From(pair.Right);

            Assert.Equal(left, left.BitwiseOr(right));
            Assert.Equal(right, right.BitwiseOr(left));
        }
        public static async Task RegisteredType_NullLink(
            Guid id,
            Guid parentId,
            UnequalNonNullPair <NonEmptyString> routes,
            JsonSerializerSettings serializerSettings)
        {
            // arrange
            var dto = new Registered
            {
                Id       = id,
                ParentId = parentId
            };

            var(route, parentRoute) = routes;
            var builder = new TransformationMap.Builder <Registered>(r => Const(new Uri($"https://example.invalid/registered/{r.Id}")));
            ITransformationMap <Registered> transformationMap = builder;

            transformationMap.Link("up", _ => (ILinkData)null);
            var map = new Dictionary <Type, ITransformationInstructions>
            {
                [typeof(Registered)] = builder
            };
            var serviceProvider = new ServiceCollection()
                                  .AddScoped <ILinkBuilder <Constant>, LinkBuilder.Constant>()
                                  .BuildServiceProvider();
            var repo = new HalRepository(map, serviceProvider);

            serializerSettings.Converters.Add(new LinkCollection.Converter());
            var sut     = new HalJsonOutputFormatter(serializerSettings, ArrayPool <char> .Shared, repo);
            var writer  = new StringWriter();
            var context = new OutputFormatterWriteContext(
                new DefaultHttpContext(),
                (_, __) => writer,
                typeof(Registered),
                dto);

            // act
            await sut.WriteResponseBodyAsync(context, new UTF8Encoding(encoderShouldEmitUTF8Identifier : false)).ConfigureAwait(false);

            var actual = JsonConvert.DeserializeObject <HollowHal>(writer.ToString(), serializerSettings);

            // assert
            Assert.NotNull(actual);
            Assert.Empty(actual.Embedded);
            Assert.NotNull(actual.Links);
            var(rel, link) = Assert.Single(actual.Links);
            Assert.Equal("self", rel);
            Assert.Equal($"https://example.invalid/registered/{id}", link.Href);
        }
Exemple #7
0
        public static void Equal_NotEqual(UnequalNonNullPair <Version> pair)
        {
            var left  = Try.Ok(pair.Left);
            var right = Try.Ok(pair.Right);

            Assert.NotEqual(left, right);
            Assert.NotEqual(right, left);

            Assert.False(left.Equals(right));
            Assert.False(right.Equals(left));

            Assert.False(left == right);
            Assert.False(right == left);

            Assert.True(left != right);
            Assert.True(right != left);
        }
Exemple #8
0
        public static void Equal_NotEqual(UnequalNonNullPair <NonEmptyString> pair)
        {
            var left  = Try.Err(pair.Left.Get);
            var right = Try.Err(pair.Right.Get);

            Assert.NotEqual(left, right);
            Assert.NotEqual(right, left);

            Assert.False(left.Equals(right));
            Assert.False(right.Equals(left));

            Assert.False(left == right);
            Assert.False(right == left);

            Assert.True(left != right);
            Assert.True(right != left);
        }
Exemple #9
0
 public static void Deconstruct <T>(this UnequalNonNullPair <T> pair, out T left, out T right)
     where T : class
 {
     left  = pair.Left;
     right = pair.Right;
 }
Exemple #10
0
 public static void ComparerContains_Right_False(UnequalNonNullPair <string> values) =>
 Assert.False(Either.From <Guid, string>(values.Right).Contains(values.Left, StringComparer.Ordinal));
Exemple #11
0
 public static void ComparerContains_Ok_False(UnequalNonNullPair <Version> pair) =>
 Assert.False(Try <string, Version> .From(pair.Left).Contains(pair.Right, EqualityComparer <Version> .Default));
Exemple #12
0
 public static void ObjectEquals_SameType_SameState_DifferentValue(UnequalNonNullPair <string> values) =>
 Assert.False(Either.From <string, int>(values.Left).Equals(Either.From <string, int>(values.Right)));
Exemple #13
0
 public static void Contains_Some_False(UnequalNonNullPair <string> pair) =>
 Assert.False(Option.From(pair.Left).Contains(pair.Right));
Exemple #14
0
 public static void ComparerContains_Some_False(UnequalNonNullPair <string> pair) =>
 Assert.False(Option.From(pair.Left).Contains(pair.Right, StringComparer.OrdinalIgnoreCase));