public async Task Then_Do_Not_Add_Redundant_Link_To_The_Back_Link(
            MatchingDbContext dbContext,
            HttpContext httpContext,
            HttpContextAccessor httpContextAccessor,
            ILogger <GenericRepository <UserCache> > logger
            )
        {
            httpContextAccessor.HttpContext = httpContext;

            var config = new MapperConfiguration(c =>
            {
                c.AddMaps(typeof(UserCacheMapper).Assembly);
                c.ConstructServicesUsing(type =>
                                         type.Name.Contains("LoggedInUserNameResolver") ?
                                         (object)new LoggedInUserNameResolver <UserCacheDto, UserCache>(httpContextAccessor) :
                                         type.Name.Contains("UtcNowResolver") ?
                                         new UtcNowResolver <UserCacheDto, UserCache>(new DateTimeProvider()) :
                                         null);
            });

            //Arrange
            var mapper   = new Mapper(config);
            var repo     = new GenericRepository <UserCache>(logger, dbContext);
            var username = httpContextAccessor.HttpContext.User.GetUserName();

            var expectedList = new List <string>
            {
                "/Start",
                "/find-providers",
                "/test-url",
                "/provider-results-for-opportunity-0-item"
            };

            var sut = new Application.Services.NavigationService(mapper, repo);

            //Act
            await AddTestUrls(sut, dbContext, username, new List <string>
            {
                "/Start",
                "/find-providers",
                "/find-providers",
                "/test-url",
                "/test-url",
                "/provider-results-for-opportunity-0-item"
            });

            var addedItem = await repo.GetFirstOrDefaultAsync(x => x.CreatedBy == username);

            //Assert
            addedItem.Value.Should().NotBeNullOrEmpty();
            addedItem.Value.Select(x => x.Url).Should().BeEquivalentTo(expectedList);
            addedItem.Value.Select(x => x.Id).Should().Contain(1);
            addedItem.Value.Should().Contain(url => url.Id == 1).Which.Url.Should().Contain("/Start");
            addedItem.Value.Should().Contain(url => url.Id == 2).Which.Url.Should().Contain("/find-providers");
            addedItem.Value.Should().Contain(url => url.Id == 3).Which.Url.Should().Contain("/test-url");
            addedItem.Value.Should().Contain(url => url.Id == 4).Which.Url.Should().Contain("/provider-results-for-opportunity-0-item");
        }
Beispiel #2
0
        public async Task Then_Get_Back_Link(
            MatchingDbContext dbContext,
            HttpContext httpContext,
            HttpContextAccessor httpContextAccessor,
            ILogger <GenericRepository <UserCache> > logger
            )
        {
            httpContextAccessor.HttpContext = httpContext;

            var config = new MapperConfiguration(c =>
            {
                c.AddMaps(typeof(UserCacheMapper).Assembly);
                c.ConstructServicesUsing(type =>
                                         type.Name.Contains("LoggedInUserNameResolver") ?
                                         (object)new LoggedInUserNameResolver <UserCacheDto, UserCache>(httpContextAccessor) :
                                         type.Name.Contains("UtcNowResolver") ?
                                         new UtcNowResolver <UserCacheDto, UserCache>(new DateTimeProvider()) :
                                         null);
            });

            //Arrange
            var mapper   = new Mapper(config);
            var repo     = new GenericRepository <UserCache>(logger, dbContext);
            var username = httpContextAccessor.HttpContext.User.GetUserName();

            var sut = new Application.Services.NavigationService(mapper, repo);

            //Act
            await AddTestUrls(sut, dbContext, username, new List <string> {
                "/Start", "/find-providers", "/test-url"
            });

            //Assert
            var prevUrl = await sut.GetBackLinkAsync(username);

            prevUrl.Should().Be("/find-providers");

            dbContext.DetachAllEntities();

            prevUrl = await sut.GetBackLinkAsync(username);

            prevUrl.Should().Be("/Start");
        }
Beispiel #3
0
        public async Task Then_Get_Back_Link_For_The_Correct_User(
            MatchingDbContext dbContext,
            HttpContext httpContext,
            HttpContextAccessor httpContextAccessor,
            ILogger <GenericRepository <UserCache> > logger
            )
        {
            httpContextAccessor.HttpContext = httpContext;

            var config = new MapperConfiguration(c =>
            {
                c.AddMaps(typeof(UserCacheMapper).Assembly);
                c.ConstructServicesUsing(type =>
                                         type.Name.Contains("LoggedInUserNameResolver") ?
                                         (object)new LoggedInUserNameResolver <UserCacheDto, UserCache>(httpContextAccessor) :
                                         type.Name.Contains("UtcNowResolver") ?
                                         new UtcNowResolver <UserCacheDto, UserCache>(new DateTimeProvider()) :
                                         null);
            });

            //Arrange
            var mapper   = new Mapper(config);
            var repo     = new GenericRepository <UserCache>(logger, dbContext);
            var username = httpContextAccessor.HttpContext.User.GetUserName();

            var sut = new Application.Services.NavigationService(mapper, repo);

            //Act
            await AddTestUrls(sut, dbContext, username, new List <string> {
                "/Start", "/find-providers", "/test-url"
            });

            var addedItem = await repo.GetFirstOrDefaultAsync(x => x.CreatedBy == username && x.Key == CacheTypes.BackLink.ToString());

            //Assert
            addedItem.Should().NotBeNull();
            addedItem.Key.Should().Be(CacheTypes.BackLink.ToString());
        }
        public async Task Then_Do_Not_Add_Excluded_List(
            MatchingDbContext dbContext,
            HttpContext httpContext,
            HttpContextAccessor httpContextAccessor,
            ILogger <GenericRepository <UserCache> > logger
            )
        {
            httpContextAccessor.HttpContext = httpContext;

            var config = new MapperConfiguration(c =>
            {
                c.AddMaps(typeof(UserCacheMapper).Assembly);
                c.ConstructServicesUsing(type =>
                                         type.Name.Contains("LoggedInUserNameResolver") ?
                                         (object)new LoggedInUserNameResolver <UserCacheDto, UserCache>(httpContextAccessor) :
                                         type.Name.Contains("UtcNowResolver") ?
                                         new UtcNowResolver <UserCacheDto, UserCache>(new DateTimeProvider()) :
                                         null);
            });

            //Arrange
            var mapper   = new Mapper(config);
            var repo     = new GenericRepository <UserCache>(logger, dbContext);
            var username = httpContextAccessor.HttpContext.User.GetUserName();

            var sut = new Application.Services.NavigationService(mapper, repo);

            //Act
            await AddTestUrls(sut, dbContext, username, new List <string> {
                "/Account/PostSignIn", "referral-create"
            });

            var addedItem = await repo.GetFirstOrDefaultAsync(x => x.CreatedBy == username);

            //Assert
            addedItem.Should().BeNull();
        }