public void ApplyIncludesReturnsNull()
        {
            // Arrange
            var organizationList    = EntityGenerator.GetOrganizationEntityList(1, PublishingStatusCache);
            var deletedOrganization = organizationList.Where(o => o.PublishingStatusId == DeletedId).FirstOrDefault();
            var id = deletedOrganization.Id;

            var unitOfWork     = unitOfWorkMockSetup.Object;
            var contextManager = new TestContextManager(unitOfWork, unitOfWork);

            var serviceUtilities = new ServiceUtilities(UserIdentification, LockingManager, contextManager, UserOrganizationService,
                                                        VersioningManager, UserInfoService, UserOrganizationChecker);

            translationManagerMockSetup.Setup(t => t.Translate <OrganizationVersioned, VmOpenApiOrganizationSaha>(deletedOrganization))
            .Returns(new VmOpenApiOrganizationSaha());
            var translationManagerMock = translationManagerMockSetup.Object;

            VersioningManagerMock.Setup(s => s.GetVersionId <OrganizationVersioned>(unitOfWork, id, PublishingStatus.Published, true)).Returns(Guid.NewGuid());

            OrganizationRepoMock.Setup(g => g.All()).Returns(organizationList.AsQueryable());

            var service = new DataAccess.Services.OrganizationService(contextManager, translationManagerMock, TranslationManagerVModel, Logger, OrganizationLogic,
                                                                      serviceUtilities, DataUtils, CommonService, AddressService, PublishingStatusCache, LanguageCache,
                                                                      VersioningManager, UserOrganizationChecker, CacheManager.TypesCache);

            // Act
            Action act = () => service.GetOrganizationSahaById(id);

            // Assert
            act.ShouldThrow <Exception>();
        }
        public void RightVersionNotFound(bool getOnlyPublished)
        {
            // Arrange
            var id               = Guid.NewGuid();
            var unitOfWork       = unitOfWorkMockSetup.Object;
            var contextManager   = new TestContextManager(unitOfWork, unitOfWork);
            var serviceUtilities = new ServiceUtilities(UserIdentification, LockingManager, contextManager, UserOrganizationService,
                                                        VersioningManager, UserInfoService, UserOrganizationChecker);

            var translationManagerMock = translationManagerMockSetup.Object;

            VersioningManagerMock.Setup(s => s.GetVersionId <OrganizationVersioned>(unitOfWork, id, PublishingStatus.Published, true)).Returns((Guid?)null);
            VersioningManagerMock.Setup(s => s.GetVersionId <OrganizationVersioned>(unitOfWork, id, null, false)).Returns((Guid?)null);

            var service = new DataAccess.Services.OrganizationService(contextManager, translationManagerMock, TranslationManagerVModel, Logger, OrganizationLogic,
                                                                      serviceUtilities, DataUtils, CommonService, AddressService, PublishingStatusCache, LanguageCache,
                                                                      VersioningManager, UserOrganizationChecker, CacheManager.TypesCache);

            // Act
            var result = service.GetOrganizationById(id, DefaultVersion, getOnlyPublished);

            // Assert
            result.Should().BeNull();
            if (getOnlyPublished)
            {
                VersioningManagerMock.Verify(x => x.GetVersionId <OrganizationVersioned>(unitOfWork, id, PublishingStatus.Published, true), Times.Once());
            }
            else
            {
                VersioningManagerMock.Verify(x => x.GetVersionId <OrganizationVersioned>(unitOfWork, id, null, false), Times.Once());
            }
        }
Beispiel #3
0
        private IVmOpenApiGuidPageVersionBase ArrangeAndAct(DateTime?date, List <OrganizationVersioned> entityList, int pageNumber, int pageSize, bool archived, int version = 7)
        {
            // unitOfWork
            OrganizationRepoMock.Setup(g => g.All()).Returns(entityList.AsQueryable());

            unitOfWorkMockSetup.Setup(uw => uw.ApplyIncludes(
                                          It.IsAny <IQueryable <OrganizationVersioned> >(),
                                          It.IsAny <Func <IQueryable <OrganizationVersioned>, IQueryable <OrganizationVersioned> > >(),
                                          It.IsAny <bool>()
                                          )).Returns((IQueryable <OrganizationVersioned> organizations, Func <IQueryable <OrganizationVersioned>, IQueryable <OrganizationVersioned> > func, bool applyFilters) =>
            {
                return(organizations);
            });

            var unitOfWorkMock = unitOfWorkMockSetup.Object;

            // Translation manager
            translationManagerMockSetup.Setup(t => t.TranslateAll <OrganizationVersioned, VmOpenApiOrganizationItem>(It.IsAny <IList <OrganizationVersioned> >()))
            .Returns((ICollection <OrganizationVersioned> collection) =>
            {
                var list = new List <VmOpenApiOrganizationItem>();
                if (collection?.Count > 0)
                {
                    collection.ToList().ForEach(c => list.Add(new VmOpenApiOrganizationItem
                    {
                        ParentOrganization = c.ParentId,
                        Id = c.UnificRootId,
                    }));
                }
                return(list);
            });
            var translationManagerMock = translationManagerMockSetup.Object;

            var contextManager = new TestContextManager(unitOfWorkMock, unitOfWorkMock);

            var serviceUtilities = new ServiceUtilities(UserIdentification, LockingManager, contextManager, UserOrganizationService,
                                                        VersioningManager, UserInfoService, UserOrganizationChecker);

            var service = new DataAccess.Services.OrganizationService(contextManager, translationManagerMock, TranslationManagerVModel, Logger, OrganizationLogic,
                                                                      serviceUtilities, DataUtils, CommonService, AddressService, PublishingStatusCache, LanguageCache,
                                                                      VersioningManager, UserOrganizationChecker, CacheManager.TypesCache);

            // Act
            return(service.GetOrganizations(date, version, pageNumber, pageSize, archived));
        }
        public void NoDateDefined()
        {
            // Arrange
            var pageSize = 1;

            organizationList = EntityGenerator.GetOrganizationEntityList(1, PublishingStatusCache);
            var publishedAndDeletedList = organizationList.Where(e => e.PublishingStatusId == PublishedId && e.LanguageAvailabilities.Any(l => l.StatusId == PublishedId) ||
                                                                 e.PublishingStatusId == DeletedId || e.PublishingStatusId == OldPublishedId).ToList();

            OrganizationRepoMock.Setup(g => g.All()).Returns(organizationList.AsQueryable());

            // unitOfWork
            unitOfWorkMockSetup.Setup(uw => uw.ApplyIncludes(
                                          It.IsAny <IQueryable <OrganizationVersioned> >(),
                                          It.IsAny <Func <IQueryable <OrganizationVersioned>, IQueryable <OrganizationVersioned> > >(),
                                          It.IsAny <bool>()
                                          )).Returns(publishedAndDeletedList.AsQueryable());

            var unitOfWorkMock = unitOfWorkMockSetup.Object;

            translationManagerMockSetup.Setup(t => t.TranslateAll <OrganizationVersioned, VmOpenApiOrganizationSaha>(It.IsAny <IList <OrganizationVersioned> >()))
            .Returns(new List <VmOpenApiOrganizationSaha> {
                new VmOpenApiOrganizationSaha()
            });

            var contextManager = new TestContextManager(unitOfWorkMock, unitOfWorkMock);

            var serviceUtilities = new ServiceUtilities(UserIdentification, LockingManager, contextManager, UserOrganizationService,
                                                        VersioningManager, UserInfoService, UserOrganizationChecker);

            var service = new DataAccess.Services.OrganizationService(contextManager, translationManagerMockSetup.Object, TranslationManagerVModel, Logger, OrganizationLogic,
                                                                      serviceUtilities, DataUtils, CommonService, AddressService, PublishingStatusCache, LanguageCache,
                                                                      VersioningManager, UserOrganizationChecker, CacheManager.TypesCache);

            // Act
            var result = service.GetOrganizationsSaha(null, 1, pageSize);

            // Assert
            result.Should().NotBeNull();
            result.PageCount.Should().Be(publishedAndDeletedList.Count);
        }
        public void OnlyTwoSubOrganizationLevelsReturned()
        {
            // Arrange
            // set an organization list where exists three levels of suborganizations. So we need at least 4 items in a list.
            organizationList = EntityGenerator.GetOrganizationEntityList(2, PublishingStatusCache);                                                     // 2 * 5 items
            var publishedAndDeletedList = organizationList.Where(e => e.PublishingStatusId == PublishedId && e.LanguageAvailabilities.Any(l => l.StatusId == PublishedId) ||
                                                                 e.PublishingStatusId == DeletedId || e.PublishingStatusId == OldPublishedId).ToList(); // includes 6 items = 2 * 3
            var mainOrganization = publishedAndDeletedList.FirstOrDefault();
            var nextItem         = 1;
            var parentId         = mainOrganization.Id;

            publishedAndDeletedList.ForEach(o =>
            {
                if (o.Id != mainOrganization.Id)
                {
                    o.ParentId = parentId;
                    switch (nextItem)
                    {
                    case 1:
                        // First level organization
                        o.Parent = new Model.Models.Organization {
                            Versions = new List <OrganizationVersioned>
                            {
                                new OrganizationVersioned {
                                    PublishingStatusId = PublishedId
                                }
                            }
                        };
                        nextItem = 2;
                        break;

                    case 2:
                        // Second level organization
                        o.Parent = new Model.Models.Organization
                        {
                            Versions = new List <OrganizationVersioned>
                            {
                                new OrganizationVersioned
                                {
                                    PublishingStatusId = PublishedId,
                                    ParentId           = Guid.NewGuid(),
                                    Parent             = new Model.Models.Organization
                                    {
                                        Versions = new List <OrganizationVersioned>
                                        {
                                            new OrganizationVersioned {
                                                PublishingStatusId = PublishedId
                                            }
                                        }
                                    }
                                }
                            }
                        };
                        nextItem = 3;
                        break;

                    case 3:
                        // Third level organization
                        o.Parent = new Model.Models.Organization
                        {
                            Versions = new List <OrganizationVersioned>
                            {
                                new OrganizationVersioned
                                {
                                    PublishingStatusId = PublishedId,
                                    ParentId           = Guid.NewGuid(),
                                    Parent             = new Model.Models.Organization
                                    {
                                        Versions = new List <OrganizationVersioned>
                                        {
                                            new OrganizationVersioned
                                            {
                                                PublishingStatusId = PublishedId,
                                                ParentId           = Guid.NewGuid(),
                                                Parent             = new Model.Models.Organization {
                                                    Versions = new List <OrganizationVersioned>
                                                    {
                                                        new OrganizationVersioned {
                                                            PublishingStatusId = PublishedId
                                                        }
                                                    }
                                                }
                                            }
                                        },
                                    }
                                }
                            }
                        };
                        nextItem = 3;
                        break;

                    default:
                        break;
                    }
                    parentId = o.Id;
                }
            });
            var validLevelsList = publishedAndDeletedList.Where(o => o.ParentId == null ||                                                                                                                           // main level
                                                                (o.Parent != null && o.Parent.Versions.Any(p => (p.PublishingStatusId == PublishedId || p.PublishingStatusId == DeletedId) && (p.ParentId == null || // first level child
                                                                                                                                                                                               p.Parent != null && p.Parent.Versions.Any(pp => (pp.PublishingStatusId == PublishedId || pp.PublishingStatusId == DeletedId) && pp.ParentId == null)))));

            OrganizationRepoMock.Setup(g => g.All()).Returns(organizationList.AsQueryable());

            // unitOfWork
            unitOfWorkMockSetup.Setup(uw => uw.ApplyIncludes(
                                          It.IsAny <IQueryable <OrganizationVersioned> >(),
                                          It.IsAny <Func <IQueryable <OrganizationVersioned>, IQueryable <OrganizationVersioned> > >(),
                                          It.IsAny <bool>()
                                          )).Returns(validLevelsList.AsQueryable());

            var unitOfWorkMock = unitOfWorkMockSetup.Object;

            translationManagerMockSetup.Setup(t => t.TranslateAll <OrganizationVersioned, VmOpenApiOrganizationSaha>(It.IsAny <IList <OrganizationVersioned> >()))
            .Returns(new List <VmOpenApiOrganizationSaha> {
                new VmOpenApiOrganizationSaha()
            });

            var contextManager = new TestContextManager(unitOfWorkMock, unitOfWorkMock);

            var serviceUtilities = new ServiceUtilities(UserIdentification, LockingManager, contextManager, UserOrganizationService,
                                                        VersioningManager, UserInfoService, UserOrganizationChecker);

            var service = new DataAccess.Services.OrganizationService(contextManager, translationManagerMockSetup.Object, TranslationManagerVModel, Logger, OrganizationLogic,
                                                                      serviceUtilities, DataUtils, CommonService, AddressService, PublishingStatusCache, LanguageCache,
                                                                      VersioningManager, UserOrganizationChecker, CacheManager.TypesCache);

            // Act
            var result = service.GetOrganizationsSaha(null, 1, 1);

            // Assert
            result.Should().NotBeNull();
            result.PageCount.Should().Be(validLevelsList.Count());
            Assert.IsType <VmOpenApiOrganizationSahaGuidPage>(result);
        }