public async Task When_AddSkillsWithoutSearchTerm_Then_ShouldAddSelectedSkills()
        {
            var controller = new RelatedSkillsController(_serviceTaxonomySearcher, _settings, _compositeSettings, _sessionService);

            controller.ControllerContext = new ControllerContext
            {
                HttpContext = new DefaultHttpContext()
            };

            controller.ControllerContext.HttpContext = MockHelpers.SetupControllerHttpContext().Object;

            var dic = new System.Collections.Generic.Dictionary <string, Microsoft.Extensions.Primitives.StringValues>();

            dic.Add("somekey--somevalue", "key1");
            dic.Add("somekey1--somevalue1", "key2");
            var collection = new Microsoft.AspNetCore.Http.FormCollection(dic);


            _sessionService.GetUserSession().ReturnsForAnyArgs(MockHelpers.GetUserSession(true));
            _sessionService.UpdateUserSessionAsync(Arg.Any <UserSession>()).ReturnsNullForAnyArgs();

            var result = await controller.Body(collection, "") as RedirectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <RedirectResult>();
            result.Url.Should().Be($"~/{CompositeViewModel.PageId.SkillsBasket}");
        }
        public async Task WhenBodyCalled_ReturnHtml()
        {
            var controller = new RelatedSkillsController(_serviceTaxonomySearcher, _settings, _compositeSettings, _sessionService);

            controller.ControllerContext = new ControllerContext
            {
                HttpContext = new DefaultHttpContext()
            };

            var result = await controller.Body() as ViewResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <ViewResult>();
            result.ViewName.Should().BeNull();
        }
        public async Task WhenGetBodyWithInputCalled_ReturnDataAndHtml()
        {
            var controller = new RelatedSkillsController(_serviceTaxonomySearcher, _settings, _compositeSettings, _sessionService);

            controller.ControllerContext = new ControllerContext
            {
                HttpContext = new DefaultHttpContext()
            };

            var result = await controller.Body("Test") as ViewResult;

            var model = result.Model as RelatedSkillsCompositeViewModel;

            model.RelatedSkills.Should().NotBeNullOrEmpty();
            result.Should().NotBeNull();
            result.Should().BeOfType <ViewResult>();
        }
        public async Task WhenPostBodyHasOneValue_FlagError_ReturnHtml()
        {
            var controller = new RelatedSkillsController(_serviceTaxonomySearcher, _settings, _compositeSettings, _sessionService);

            controller.ControllerContext = new ControllerContext
            {
                HttpContext = new DefaultHttpContext()
            };

            var formCollection = Substitute.For <IFormCollection>();

            formCollection.Keys.Count.ReturnsForAnyArgs(1);
            var result = await controller.Body(formCollection, String.Empty) as RedirectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <RedirectResult>();
            result.Url.Should().Be($"~/{CompositeViewModel.PageId.RelatedSkills}?errors=true");
        }
        public async Task When_Toggle_Then_ViewModelAllSkillsSelectedToggled()
        {
            var controller = new RelatedSkillsController(_serviceTaxonomySearcher, _settings, _compositeSettings, _sessionService)
            {
                ControllerContext = new ControllerContext
                {
                    HttpContext = new DefaultHttpContext()
                }
            };

            _sessionService.GetUserSession().ReturnsForAnyArgs(MockHelpers.GetUserSession(true));


            var result = await controller.SkillSelectToggle(false, "admin") as ViewResult;

            var vm = result.ViewData.Model as RelatedSkillsCompositeViewModel;

            vm.AllSkillsSelected.Should().BeTrue();
        }