public async Task SetAndGetAsync_SetAndGetObject_SetsObjectAndReturnsExpectedObject() { // arrange var serviceCollection = new ServiceCollection(); Setup(serviceCollection); var logger = new Mock <IAppLogger <AppCache> >(); serviceCollection.AddTransient(s => logger.Object); var serviceProvider = serviceCollection.BuildServiceProvider(); serviceProvider.TightenBolts(); var sut = serviceProvider.GetService <IAppCache>(); var student = new Fakes.Student { FirstName = "first", Id = Guid.NewGuid() }; // act await sut.SetAsync("StudentId", student); var result = await sut.GetAsync <Fakes.Student>("StudentId"); // assert Assert.NotNull(result); Assert.Equal(student.Id, result.Id); Assert.Equal(student.FirstName, result.FirstName); logger.Verify(l => l.Debug("Setting value in cache... Key: StudentId")); // cleanup await sut.RemoveAsync("StudentId"); }
public async Task SetAndGet_SetWithExpiryIntervalAndWhenRetrievedBeforeAndAfterExpiryInterval_IsSuccessful() { // arrange var serviceCollection = new ServiceCollection(); Setup(serviceCollection); var logger = new Mock <IAppLogger <AppCache> >(); serviceCollection.AddTransient(s => logger.Object); var serviceProvider = serviceCollection.BuildServiceProvider(); serviceProvider.TightenBolts(); var sut = serviceProvider.GetService <IAppCache>(); var student = new Fakes.Student { FirstName = "first", Id = Guid.NewGuid() }; const int expirationInterval = 2000; // act await sut.SetAsync("Student", student, absoluteExpiration : TimeSpan.FromMilliseconds(expirationInterval)); var result = await sut.GetAsync <Fakes.Student>("Student"); // assert Assert.NotNull(result); Assert.Equal(student.Id, result.Id); await Task.Delay(500); await sut.GetAsync <Fakes.Student>("Student"); await Task.Delay(expirationInterval - 200); logger.Verify(l => l.Debug("Setting value in cache... Key: Student")); var result2 = await sut.GetAsync <Fakes.Student>("Student"); Assert.Null(result2); // cleanup await sut.RemoveAsync("Student"); }