public void OnOverride_GivenContext_CallsCache()
        {
            // arrange
            var context = new InterceptionContext();
            context.Parameters = new List<Parameter>(new[] { new Parameter { Value = 2 } });

            var cacheMock = new Mock<ICache>();
            var expectedReturn = new MockDataReader();

            cacheMock
                .Setup(x => x.GetDataReader(It.IsAny<SqlCommand>(), It.IsAny<Func<DbDataReader>>()))
                .Returns(expectedReturn);

            var sut = new ReaderCachingInterceptor(cacheMock.Object);

            // act
            var actualReturn = sut.OnOverride(context);

            // assert
            Assert.That(actualReturn, Is.SameAs(expectedReturn));

            cacheMock.Verify(
                x => x.GetDataReader(It.IsAny<SqlCommand>(), It.IsAny<Func<DbDataReader>>()),
                Times.Once());
        }
        [Test] // might be integration testing CodeCop, whatever...
        public void OnOverride_GivenNullContext_ThrowsException()
        {
            // arrange
            var sut = new ReaderCachingInterceptor(Mock.Of<ICache>());

            // assert
            Assert.Throws<ArgumentNullException>(() => sut.OnOverride(null));
        }
        public void OnAfterExecute_Always_DoesNothing()
        {
            // arrange
            var sut = new ReaderCachingInterceptor(Mock.Of<ICache>());

            // act
            sut.OnAfterExecute(null);
        }