public void AspNetCoreBreakdanceTestBase_EnsureTestServer_ThrowsExceptionWhenUnconfigured()
        {
            var testBase = new AspNetCoreBreakdanceTestBase();

            testBase.TestServer.Should().BeNull();
            testBase.GetService <IConfiguration>().Should().BeNull();

            Action act = () => { testBase.EnsureTestServer(); };

            act.Should().Throw <InvalidOperationException>();
        }
        public void AspNetCoreBreakdanceTestBase_AddMinimalMvc_HasExpectedDefaults()
        {
            var testBase = new AspNetCoreBreakdanceTestBase();

            testBase.TestServer.Should().BeNull();

            testBase.AddMinimalMvc();
            testBase.EnsureTestServer();

            testBase.TestServer.Should().NotBeNull();
            testBase.GetService <IConfiguration>().Should().NotBeNull();

            // JHC TODO: add asserts here using testBase.GetService<T> to ensure that the expected services were registered on the host
        }
        public void AspNetCoreBreakdanceTestBase_AddViews_HasExpectedDefaults()
        {
            var testBase = new AspNetCoreBreakdanceTestBase();

            testBase.TestServer.Should().BeNull();

            testBase.AddViews(options => options.EnableEndpointRouting = false);
            testBase.EnsureTestServer();

            testBase.TestServer.Should().NotBeNull();
            testBase.GetService <IConfiguration>().Should().NotBeNull();

            // JHC TODO: add asserts here using testBase.GetService<T> to ensure that the expected services were registered on the host
        }
        public async Task AspNetCoreBreakdanceTestBase_AddMinimalMvc_CanInvokeMiddleware()
        {
            var testBase = new AspNetCoreBreakdanceTestBase();

            testBase.AddMinimalMvc(app: builder =>
            {
                builder.UseWelcomePage("/welcome");
            });

            testBase.EnsureTestServer();

            var response = await testBase.TestServer.CreateRequest("/welcome").GetAsync();

            response.StatusCode.Should().Be(HttpStatusCode.OK);
            var content = await response.Content.ReadAsStringAsync();

            content.Should().Contain("Your ASP.NET Core application has been successfully started.");
        }
        public void AspNetCoreBreakdanceTestBase_TestServer_CanRegisterServices()
        {
            var testBase = new AspNetCoreBreakdanceTestBase();

            testBase.TestServer.Should().BeNull();
            testBase.GetService <IConfiguration>().Should().BeNull();
            testBase.GetService <FakeService>().Should().BeNull();

            testBase.TestHostBuilder.ConfigureServices(services => {
                services.AddScoped <FakeService>();
            });

            testBase.AddMinimalMvc();
            testBase.EnsureTestServer();

            testBase.TestServer.Should().NotBeNull();
            testBase.GetService <IConfiguration>().Should().NotBeNull();
            testBase.GetService <FakeService>().Should().NotBeNull();
        }