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>();
        }
Пример #2
0
        private DataAccess.Services.OrganizationService Arrange(List <OrganizationVersioned> list = null)
        {
            var organizationList      = list ?? _organizationList;
            var publishedOrganization = organizationList.Where(o => o.PublishingStatusId == PublishedId).FirstOrDefault();
            var id     = publishedOrganization.Id;
            var rootId = publishedOrganization.UnificRootId;

            unitOfWorkMockSetup.Setup(uw => uw.ApplyIncludes(
                                          It.IsAny <IQueryable <OrganizationVersioned> >(),
                                          It.IsAny <Func <IQueryable <OrganizationVersioned>, IQueryable <OrganizationVersioned> > >(),
                                          It.IsAny <bool>()
                                          )).Returns((IQueryable <OrganizationVersioned> orgList, Func <IQueryable <OrganizationVersioned>, IQueryable <OrganizationVersioned> > func, bool applyfilters) =>
            {
                return(orgList);
            });
            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, VmOpenApiOrganizationVersionBase>(It.IsAny <OrganizationVersioned>()))
            .Returns((OrganizationVersioned org) =>
            {
                if (org == null)
                {
                    return(null);
                }
                return(new VmOpenApiOrganizationVersionBase {
                    Id = org.UnificRootId, Modified = org.Modified, PublishingStatus = TypeCache.GetByValue <PublishingStatusType>(org.PublishingStatusId)
                });
            });

            var translationManagerMock = translationManagerMockSetup.Object;

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

            // repositories
            OrganizationRepoMock.Setup(g => g.All()).Returns(organizationList.AsQueryable());
            OrganizationNameRepoMock.Setup(m => m.All()).Returns(Enumerable.Empty <OrganizationName>().AsQueryable());
            var serviceNameRepoMock = new Mock <IServiceNameRepository>();

            unitOfWorkMockSetup.Setup(uw => uw.CreateRepository <IServiceNameRepository>()).Returns(serviceNameRepoMock.Object);
            var organizationServiceRepoMock = new Mock <IOrganizationServiceRepository>();

            unitOfWorkMockSetup.Setup(uw => uw.CreateRepository <IOrganizationServiceRepository>()).Returns(organizationServiceRepoMock.Object);
            var serviceRepoMock = new Mock <IServiceVersionedRepository>();

            unitOfWorkMockSetup.Setup(uw => uw.CreateRepository <IServiceVersionedRepository>()).Returns(serviceRepoMock.Object);
            var serviceProducerRepoMock = new Mock <IServiceProducerOrganizationRepository>();

            unitOfWorkMockSetup.Setup(uw => uw.CreateRepository <IServiceProducerOrganizationRepository>()).Returns(serviceProducerRepoMock.Object);

            return(new DataAccess.Services.OrganizationService(contextManager, translationManagerMock, TranslationManagerVModel, Logger, OrganizationLogic,
                                                               serviceUtilities, DataUtils, CommonService, AddressService, PublishingStatusCache, LanguageCache,
                                                               VersioningManager, UserOrganizationChecker, CacheManager.TypesCache));
        }
Пример #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);
        }