Exemple #1
0
        public async Task Returns_expected_response()
        {
            // Arrange
            var expectedString = "this is a string value";
            var expectedNumber = 32;

            var client = new SelfContainedWebApplicationFactoryWithWebHost <Post_with_2_handlers>
                         (
                configureServices: services =>
            {
                services.AddViewModelComposition(options =>
                {
                    options.AssemblyScanner.Disable();
                    options.RegisterCompositionHandler <TestStringHandler>();
                    options.RegisterCompositionHandler <TestIntegerHandler>();
                    options.EnableWriteSupport();
                });
                services.AddRouting();
            },
                configure: app =>
            {
                app.UseRouting();
                app.UseEndpoints(builder => builder.MapCompositionHandlers());
            }
                         ).CreateClient();

            client.DefaultRequestHeaders.Add("Accept-Casing", "casing/pascal");

            dynamic model = new ExpandoObject();

            model.AString = expectedString;
            model.ANumber = expectedNumber;

            var json          = (string)JsonConvert.SerializeObject(model);
            var stringContent = new StringContent(json, Encoding.UTF8, MediaTypeNames.Application.Json);

            stringContent.Headers.ContentLength = json.Length;

            // Act
            var response = await client.PutAsync("/sample/1", stringContent);

            // Assert
            Assert.True(response.IsSuccessStatusCode);

            var responseString = await response.Content.ReadAsStringAsync();

            var responseObj = JObject.Parse(responseString);

            Assert.Equal(expectedString, responseObj?.SelectToken("AString")?.Value <string>());
            Assert.Equal(expectedNumber, responseObj?.SelectToken("ANumber")?.Value <int>());
        }