public async Task Check_RealStoredProcedureCallSuccess_ReturnsTrue()
        {
            var sut = new SqlDbStoredProcedureHealthCheckStrategy(new DbConnectionProvider(
                                                                      "Server=localhost\\CASH;Database=gamebase;Trusted_Connection=True;"),
                                                                  "[nrgs].[METADATA_GET]");

            Assert.True(await sut.Check(CancellationToken.None));
        }
        public async Task Check_StoredProcedureCallSuccess_ReturnsTrue()
        {
            // ARRANGE
            var          fixture             = new Fixture();
            const string storedProcedureName = "schema.spName";
            var          sut = new SqlDbStoredProcedureHealthCheckStrategy(fixture.ConnectionProvider, storedProcedureName);

            // ACT
            var result = await sut.Check(CancellationToken.None);

            // ASSERT
            Assert.True(result);
            Assert.Equal(storedProcedureName, fixture.LastCommandText);
            Assert.Equal(CommandType.StoredProcedure, fixture.LastCommandType);
            await fixture.Command.Received(1).ExecuteNonQueryAsync();

            fixture.Command.Received(1).Dispose();
            fixture.Connection.Received(1).Dispose();
        }
        public async Task Check_StoredProcedureCallThrows_ExceptionBubbles()
        {
            // ARRANGE
            var          expectedException   = new ArithmeticException();
            var          fixture             = new Fixture(exception: expectedException);
            const string storedProcedureName = "schema.faultySpName";
            var          sut = new SqlDbStoredProcedureHealthCheckStrategy(fixture.ConnectionProvider, storedProcedureName);

            // ACT
            var actualException = await Assert.ThrowsAsync <ArithmeticException>(() => sut.Check(CancellationToken.None));

            // ASSERT
            Assert.Equal(expectedException, actualException);
            Assert.Equal(storedProcedureName, fixture.LastCommandText);
            Assert.Equal(CommandType.StoredProcedure, fixture.LastCommandType);
            await fixture.Command.Received(1).ExecuteNonQueryAsync();

            fixture.Command.Received(1).Dispose();
            fixture.Connection.Received(1).Dispose();
        }