コード例 #1
0
        public async Task GetOrAddConferenceAsync_should_return_conference_when_cache_contains_key()
        {
            var conferenceResponse   = CreateConferenceResponse();
            var conference           = ConferenceCacheMapper.MapConferenceToCacheModel(conferenceResponse);
            var serialisedConference = JsonConvert.SerializeObject(conference, SerializerSettings);
            var rawData = Encoding.UTF8.GetBytes(serialisedConference);

            _distributedCacheMock
            .Setup(x => x.GetAsync(conference.Id.ToString(), CancellationToken.None))
            .ReturnsAsync(rawData);

            var cache = new DistributedConferenceCache(_distributedCacheMock.Object);

            var result = await cache.GetOrAddConferenceAsync(conference.Id, It.IsAny <Func <Task <ConferenceDetailsResponse> > >());

            result.Should().BeEquivalentTo(conference);
        }
コード例 #2
0
        public async Task GetOrAddConferenceAsync_should_return_conference_when_cache_does_not_contains_key()
        {
            var conferenceResponse   = CreateConferenceResponse();
            var conference           = ConferenceCacheMapper.MapConferenceToCacheModel(conferenceResponse);
            var serialisedConference = JsonConvert.SerializeObject(conference, SerializerSettings);
            var rawData = Encoding.UTF8.GetBytes(serialisedConference);

            _distributedCacheMock
            .SetupSequence(x => x.GetAsync(conference.Id.ToString(), CancellationToken.None))
            .ReturnsAsync((byte[])null)
            .ReturnsAsync(rawData);

            _distributedCacheMock
            .Setup(x => x.SetAsync(conference.Id.ToString(), rawData, It.IsAny <DistributedCacheEntryOptions>(), CancellationToken.None));

            var cache = new DistributedConferenceCache(_distributedCacheMock.Object);

            var result = await cache.GetOrAddConferenceAsync(conference.Id, async() => await Task.FromResult(conferenceResponse));

            result.Should().BeEquivalentTo(conference);
        }