示例#1
0
        public void CreateConcept_Returns_Null_Data_When_RepoInsert_Throws_Exception()
        {
            A.CallTo(() => ConceptRepository.Insert(A <Concept> ._)).Throws <Exception>();

            var mockConcept = Mock.MockCreateOrUpdateConcept();

            var viewModel = Service.CreateConcept(mockConcept, _userInfo);

            Assert.Null(viewModel.Data);
        }
示例#2
0
        public Response CreateConcept(CreateConceptDto newConcept, UserInfo userInfo)
        {
            var viewModel = new Response();
            var concept   = Mapper.Map <Concept>(newConcept);
            var media     = new List <ConceptMedia>();

            if (userInfo == null || string.IsNullOrEmpty(userInfo.Email) || string.IsNullOrEmpty(userInfo.FullName))
            {
                viewModel.Errors.TryAddModelError("errorMessage", "Could not get user information");
                return(viewModel);
            }

            var language = GetLanguage(viewModel, newConcept.MetaIds);

            if (language == null)
            {
                return(viewModel);
            }

            // Readonly fields
            concept.LanguageId   = language.Id;
            concept.AuthorEmail  = userInfo.Email;
            concept.AuthorName   = userInfo.FullName;
            concept.UrlToContent = string.Empty;

            // Create a language variation
            if (concept.GroupId != Guid.Empty)
            {
                if (!CanCreateLanguageVariation(viewModel, concept))
                {
                    return(viewModel);
                }
            }
            else
            {
                concept.GroupId = Guid.NewGuid();
            }

            try
            {
                concept = _conceptRepository.Insert(concept);
            }
            catch (Exception e)
            {
                viewModel.Errors.TryAddModelError("errorMessage", "Could not create concept");
                return(viewModel);
            }

            try
            {
                media = _conceptMediaRepository.InsertMediaForConcept(concept.Id, newConcept.Media);
            }
            catch (Exception e)
            {
                viewModel.Errors.TryAddModelError("errorMessage", "Could not insert media for concept");
                return(viewModel);
            }

            concept.Media  = media.Select(x => x.Media).ToList();
            viewModel.Data = Mapper.Map <ConceptDto>(concept);

            return(viewModel);
        }