public void WHEN_parameters_ok_SHOULD_return_valid_viewModel()
        {
            //Arrange
            var p = new GetSearchBreadcrumbParam()
            {
                CultureInfo = CultureInfo.InvariantCulture,
                HomeUrl     = GetRandom.WwwUrl(),
                Keywords    = GetRandom.String(7)
            };

            var sut = Container.CreateInstance <SearchBreadcrumbViewService>();

            //Act
            var vm = sut.CreateBreadcrumbViewModel(p);

            //Assert
            vm.Should().NotBeNull();
            vm.Items.Should().NotBeNullOrEmpty();

            var homeItem = vm.Items.First();

            homeItem.Url.Should().Be(p.HomeUrl);
            homeItem.DisplayName.Should().NotBeNullOrWhiteSpace();

            vm.ActivePageName.Should().NotBeNullOrWhiteSpace();
        }
        public void WHEN_param_is_null_SHOULD_throw_ArgumentNullException()
        {
            //Arrange
            GetSearchBreadcrumbParam p = null;

            var sut = Container.CreateInstance <SearchBreadcrumbViewService>();

            //Act
            var ex = Assert.Throws <ArgumentNullException>(() => sut.CreateBreadcrumbViewModel(p));

            //Assert
            ex.ParamName.Should().BeEquivalentTo("param");
        }
        public void WHEN_cultureInfo_is_null_SHOULD_throw_ArgumentNullException()
        {
            //Arrange
            var p = new GetSearchBreadcrumbParam()
            {
                CultureInfo = null,
                HomeUrl     = GetRandom.WwwUrl(),
                Keywords    = GetRandom.String(7)
            };

            var sut = Container.CreateInstance <SearchBreadcrumbViewService>();

            //Act
            var ex = Assert.Throws <ArgumentException>(() => sut.CreateBreadcrumbViewModel(p));
        }
        public virtual BreadcrumbViewModel CreateBreadcrumbViewModel(GetSearchBreadcrumbParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException(nameof(param));
            }
            if (param.CultureInfo == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.CultureInfo)), nameof(param));
            }

            var vm = new BreadcrumbViewModel
            {
                Items = new List <BreadcrumbItemViewModel>
                {
                    GenerateHomeItem(param.HomeUrl, param.CultureInfo)
                },
                ActivePageName = GenerateActivePageName(param.Keywords, param.CultureInfo)
            };

            return(vm);
        }