public async Task CalculateExecutionTimeOfDecoratedQuery() { var performanceRepositoryMock = new Mock <IEfRepository <PerformanceEntry> >(); TimeSpan executionTime = default(TimeSpan); performanceRepositoryMock.Setup(x => x.Add(It.IsAny <PerformanceEntry>())) .Callback <PerformanceEntry>(entry => executionTime = entry.Duration); var contextSaveChangesStub = new Mock <MusicZoneDbContext>( new[] { "Fake Connection string" }); var timeProviderStub = new Mock <IDateTimeProvider>(); QueryServiceStub decorateeStub = new QueryServiceStub(); // Arrange PerformanceQueryServiceDecorator <QueryStub, object> sut = new PerformanceQueryServiceDecorator <QueryStub, object>( performanceRepository: performanceRepositoryMock.Object, contextSaveChanges: contextSaveChangesStub.Object, timeProvider: timeProviderStub.Object, decoratee: decorateeStub); // Act await sut.ExecuteAsync(new QueryStub()); // Assert Assert.That(executionTime > TimeSpan.MinValue); }
public void SavePassedContextSaveChangesWhenIsNotNull() { var performanceRepositoryStub = new Mock <IEfRepository <PerformanceEntry> >(); var contextSaveChangesStub = new Mock <MusicZoneDbContext>( new[] { "Fake Connection string" }); var timeProviderStub = new Mock <IDateTimeProvider>(); QueryServiceStub decorateeStub = new QueryServiceStub(); // Arrange && Act PerformanceQueryServiceDecorator <QueryStub, object> sut = new PerformanceQueryServiceDecorator <QueryStub, object>( performanceRepository: performanceRepositoryStub.Object, contextSaveChanges: contextSaveChangesStub.Object, timeProvider: timeProviderStub.Object, decoratee: decorateeStub); // Assert var actualContextSaveChanges = sut.GetType() .GetFields(BindingFlags.Instance | BindingFlags.NonPublic) .First(fi => fi.FieldType == typeof(IEfDbContextSaveChanges)) .GetValue(sut); Assert.AreSame(contextSaveChangesStub.Object, actualContextSaveChanges); }
public async Task ReturnQueryResultFromCacheIfExistsInTheCache() { string expectedResult = "Returned from cache"; var queryServiceStub = new QueryServiceStub(); var cacheManagerStub = new Mock <ICacheManager>(); cacheManagerStub.Setup(cm => cm.Exists(It.IsAny <string>())) .Returns(true); cacheManagerStub.Setup(cm => cm.Get <object>(It.IsAny <string>())) .Returns(expectedResult); var optionsStub = new CacheOptions(false, int.MaxValue); var userContextStub = new Mock <IUserContext>(); // Arrange CacheQueryServiceProxy <QueryStub, object> sut = new CacheQueryServiceProxy <QueryStub, object>( queryService: queryServiceStub, cacheManager: cacheManagerStub.Object, options: optionsStub, userContext: userContextStub.Object); // Act string actualResult = (string)await sut.ExecuteAsync(new QueryStub()); // Assert Assert.AreEqual(expectedResult, actualResult); }
public async Task CacheTheQueryResultIfIsNotInTheCache() { var queryServiceStub = new QueryServiceStub(); var cacheManagerStub = new Mock <ICacheManager>(); cacheManagerStub.Setup(cm => cm.Exists(It.IsAny <string>())) .Returns(false); var optionsStub = new CacheOptions(false, int.MaxValue); var userContextStub = new Mock <IUserContext>(); // Arrange CacheQueryServiceProxy <QueryStub, object> sut = new CacheQueryServiceProxy <QueryStub, object>( queryService: queryServiceStub, cacheManager: cacheManagerStub.Object, options: optionsStub, userContext: userContextStub.Object); // Act await sut.ExecuteAsync(new QueryStub()); // Assert cacheManagerStub.Verify(cm => cm.Add( It.IsAny <string>(), It.IsAny <object>(), It.IsAny <int>()), Times.Once); }
public void ThrowsArgumentNullExceptionWhenPassedUserContextIsNull() { var queryServiceStub = new QueryServiceStub(); var cacheManagerStub = new Mock <ICacheManager>(); var optionsStub = new CacheOptions(false, int.MaxValue); // Arrange && Act && Assert Assert.Throws <ArgumentNullException>( () => new CacheQueryServiceProxy <QueryStub, object>( queryService: queryServiceStub, cacheManager: cacheManagerStub.Object, options: optionsStub, userContext: null)); }
public void ThrowsArgumentNullExceptionWhenPassedOptionsIsNull() { var queryServiceStub = new QueryServiceStub(); var cacheManagerStub = new Mock <ICacheManager>(); var userContextStub = new Mock <IUserContext>(); // Arrange && Act && Assert Assert.Throws <ArgumentNullException>( () => new CacheQueryServiceProxy <QueryStub, object>( queryService: queryServiceStub, cacheManager: cacheManagerStub.Object, options: null, userContext: userContextStub.Object)); }
public void ThrowsArgumentNullExceptionWhenPassedPerformanceRepositoryIsNull() { var contextSaveChangesStub = new Mock <MusicZoneDbContext>( new[] { "Fake Connection string" }); var timeProviderStub = new Mock <IDateTimeProvider>(); var decorateeStub = new QueryServiceStub(); // Arrange && Act && Assert Assert.Throws <ArgumentNullException>( () => new PerformanceQueryServiceDecorator <QueryStub, object>( performanceRepository: null, contextSaveChanges: contextSaveChangesStub.Object, timeProvider: timeProviderStub.Object, decoratee: decorateeStub)); }
public void ThrowsArgumentNullExceptionWhenPassedContextSaveChangesIsNull() { var performanceRepositoryStub = new Mock <IEfRepository <PerformanceEntry> >(); var timeProviderStub = new Mock <IDateTimeProvider>(); var decorateeStub = new QueryServiceStub(); // Arrange && Act && Assert Assert.Throws <ArgumentNullException>( () => new PerformanceQueryServiceDecorator <QueryStub, object>( performanceRepository: performanceRepositoryStub.Object, contextSaveChanges: null, timeProvider: timeProviderStub.Object, decoratee: decorateeStub)); }
public void SavePassedDecorateeWhenIsNotNull() { var userPermissionCheckerStub = new Mock <IUserPermissionChecker>(); var permissionCheckerStub = new ServicePermissionCheckerStub( permissionChecker: userPermissionCheckerStub.Object); QueryServiceStub decoratee = new QueryServiceStub(); // Arrange && Act PermissionQueryServiceDecorator <QueryStub, object> sut = new PermissionQueryServiceDecorator <QueryStub, object>( permissionChecker: permissionCheckerStub, decoratee: decoratee); // Assert var actualDecoratee = sut.GetType() .GetFields(BindingFlags.Instance | BindingFlags.NonPublic) .First(fi => fi.FieldType == typeof(IQueryService <QueryStub, object>)) .GetValue(sut); Assert.AreSame(decoratee, actualDecoratee); }
public async Task CheckPermissionsOfTheUserWhenInvoked() { var userPermissionCheckerMock = new Mock <IUserPermissionChecker>(); var permissionCheckerStub = new ServicePermissionCheckerStub( permissionChecker: userPermissionCheckerMock.Object); QueryServiceStub decorateeStub = new QueryServiceStub(); // Arrange PermissionQueryServiceDecorator <QueryStub, object> sut = new PermissionQueryServiceDecorator <QueryStub, object>( permissionChecker: permissionCheckerStub, decoratee: decorateeStub); // Act await sut.ExecuteAsync(new QueryStub()); // Assert userPermissionCheckerMock.Verify( x => x.CheckPermission(It.IsAny <string>()), Times.Once); }
public void SavePassedCacheManagerWhenIsNotNull() { var cacheManagerStub = new Mock <ICacheManager>(); var userContextStub = new Mock <IUserContext>(); var optionsStub = new CacheOptions(false, int.MaxValue); var queryServiceStub = new QueryServiceStub(); // Arrange CacheQueryServiceProxy <QueryStub, object> sut = new CacheQueryServiceProxy <QueryStub, object>( queryService: queryServiceStub, cacheManager: cacheManagerStub.Object, options: optionsStub, userContext: userContextStub.Object); // Assert var actualCacheManager = sut.GetType() .GetFields(BindingFlags.Instance | BindingFlags.NonPublic) .First(fi => fi.FieldType == typeof(ICacheManager)) .GetValue(sut); Assert.AreSame(cacheManagerStub.Object, actualCacheManager); }