예제 #1
0
        public void ASTIUpdate_RegularConnectionsNotDeleted()
        {
            // Arrange
            var serviceId = Guid.NewGuid();
            var channelId = Guid.NewGuid();
            var request   = new V7VmOpenApiServiceAndChannelRelationAstiInBase
            {
                IsASTI           = true,
                ServiceId        = serviceId,
                ChannelRelations = new List <V7VmOpenApiServiceServiceChannelAstiInBase>
                {
                    new V7VmOpenApiServiceServiceChannelAstiInBase
                    {
                        ServiceGuid = serviceId,
                        ChannelGuid = channelId,
                    }
                }
            };
            var unitOfWork = unitOfWorkMockSetup.Object;

            var contextManager = new TestContextManager(unitOfWork, unitOfWork);

            var serviceUtilities = new ServiceUtilities(UserIdentificationMock.Object, LockingManager, contextManager, UserOrganizationService,
                                                        VersioningManager, UserInfoService, UserOrganizationChecker);

            translationManagerVModelMockSetup.Setup(s => s.Translate <V7VmOpenApiServiceAndChannelRelationAstiInBase, Model.Models.Service>(request, unitOfWork))
            .Returns(new Model.Models.Service()
            {
                Id = serviceId,
                ServiceServiceChannels = new List <ServiceServiceChannel>
                {
                    new ServiceServiceChannel {
                        IsASTIConnection = true, ServiceChannelId = channelId
                    },
                    new ServiceServiceChannel {
                        IsASTIConnection = false, ServiceChannelId = Guid.NewGuid()
                    }
                }
            });

            // repositories
            ConnectionRepoMock.Setup(c => c.All()).Returns(new List <ServiceServiceChannel>().AsQueryable());
            DescriptionRepoMock.Setup(c => c.All()).Returns(new List <ServiceServiceChannelDescription>().AsQueryable());

            var service = new ServiceAndChannelService(contextManager, translationManagerMockSetup.Object, translationManagerVModelMockSetup.Object,
                                                       Logger, serviceUtilities, DataUtils, ServiceService, ChannelService, PublishingStatusCache, VersioningManager, UserOrganizationChecker,
                                                       CacheManager, UserOrganizationService);

            // Act
            var result = service.SaveServiceConnections(request, DefaultVersion);

            // Assert
            // We are not testing method GetServiceById so we expect result to be null.
            result.Should().BeNull();
            translationManagerVModelMockSetup.Verify(t => t.Translate <V7VmOpenApiServiceAndChannelRelationAstiInBase, Model.Models.Service>(It.IsAny <V7VmOpenApiServiceAndChannelRelationAstiInBase>(), unitOfWork), Times.Once());
            ConnectionRepoMock.Verify(x => x.Remove(It.IsAny <ServiceServiceChannel>()), Times.Never());
            DescriptionRepoMock.Verify(x => x.Remove(It.IsAny <ServiceServiceChannelDescription>()), Times.Never());
        }
        public void DeleteAllASTIConnections()
        {
            // Arrange
            var channelId  = Guid.NewGuid();
            var serviceId  = Guid.NewGuid();
            var serviceId2 = Guid.NewGuid();
            var request    = new V7VmOpenApiChannelServicesIn
            {
                ChannelId = channelId,
                DeleteAllServiceRelations = true
            };

            // repositories
            var connectionList = new List <ServiceServiceChannel>()
            {
                new ServiceServiceChannel {
                    ServiceId = serviceId, ServiceChannelId = channelId
                },
                new ServiceServiceChannel {
                    ServiceId = serviceId2, ServiceChannelId = channelId
                }
            };

            ConnectionRepoMock.Setup(c => c.All()).Returns(connectionList.AsQueryable());
            DescriptionRepoMock.Setup(c => c.All()).Returns(new List <ServiceServiceChannelDescription>
            {
                new ServiceServiceChannelDescription {
                    ServiceId = serviceId, ServiceChannelId = channelId
                },
                new ServiceServiceChannelDescription {
                    ServiceId = serviceId2, ServiceChannelId = channelId
                },
            }.AsQueryable());

            var unitOfWork = unitOfWorkMockSetup.Object;

            var contextManager = new TestContextManager(unitOfWork, unitOfWork);

            var serviceUtilities = new ServiceUtilities(UserIdentificationMock.Object, LockingManager, contextManager, UserOrganizationService,
                                                        VersioningManager, UserInfoService, UserOrganizationChecker);

            translationManagerVModelMockSetup.Setup(s => s.Translate <V7VmOpenApiChannelServicesIn, ServiceChannel>(request, unitOfWork))
            .Returns(new ServiceChannel()
            {
                Id = serviceId,
                ServiceServiceChannels = new List <ServiceServiceChannel>
                {
                    new ServiceServiceChannel {
                        IsASTIConnection = true, ServiceChannelId = channelId, ServiceId = serviceId
                    },
                    new ServiceServiceChannel {
                        IsASTIConnection = true, ServiceChannelId = channelId, ServiceId = serviceId2
                    },
                    new ServiceServiceChannel {
                        IsASTIConnection = false, ServiceChannelId = channelId, ServiceId = Guid.NewGuid()
                    }                                                                                                                     // regular connection that should not be removed
                }
            });

            var service = new ServiceAndChannelService(contextManager, translationManagerMockSetup.Object, translationManagerVModelMockSetup.Object,
                                                       Logger, serviceUtilities, DataUtils, ServiceService, ChannelService, PublishingStatusCache, VersioningManager, UserOrganizationChecker,
                                                       CacheManager, UserOrganizationService);

            // Act
            var result = service.SaveServiceChannelConnections(request, DefaultVersion);

            // Assert
            // We are not testing method GetServiceChannelById so we expect result to be null.
            result.Should().BeNull();
            translationManagerVModelMockSetup.Verify(t => t.Translate <V7VmOpenApiChannelServicesIn, ServiceChannel>(It.IsAny <V7VmOpenApiChannelServicesIn>(), unitOfWork), Times.Once());
            ConnectionRepoMock.Verify(x => x.Remove(It.IsAny <ServiceServiceChannel>()), Times.Exactly(2));
            DescriptionRepoMock.Verify(x => x.Remove(It.IsAny <ServiceServiceChannelDescription>()), Times.Exactly(2));
        }
예제 #3
0
        public AddServiceTests()
        {
            _serviceId          = Guid.NewGuid();
            _serviceVersionedId = Guid.NewGuid();
            _channelId          = Guid.NewGuid();
            _channelVersionedId = Guid.NewGuid();

            SetupTypesCacheMock <ServiceType>();
            SetupTypesCacheMock <ServiceChargeType>();

            var serviceVersioned = new ServiceVersioned
            {
                Id           = _serviceVersionedId,
                UnificRootId = _serviceId,
                UnificRoot   = new Model.Models.Service()
                {
                    Id = _serviceId,
                    ServiceServiceChannels = new List <ServiceServiceChannel>()
                },
                Organization = new Model.Models.Organization()
            };

            var channelVersioned = EntityGenerator.CreateEntity <ServiceChannelVersioned, ServiceChannel, ServiceChannelLanguageAvailability>(PublishedId, _channelId, _channelVersionedId);

            channelVersioned.UnificRoot = new ServiceChannel {
                Id = _channelId, Versions = new List <ServiceChannelVersioned> {
                    channelVersioned
                }
            };

            var connectionList = new List <ServiceServiceChannel>
            {
                new ServiceServiceChannel {
                    Service          = serviceVersioned.UnificRoot,
                    ServiceId        = serviceVersioned.UnificRootId,
                    ServiceChannel   = channelVersioned.UnificRoot,
                    ServiceChannelId = channelVersioned.UnificRootId
                }
            };

            translationManagerVModelMockSetup.Setup(t => t.Translate <IVmOpenApiServiceInVersionBase, ServiceVersioned>(It.IsAny <IVmOpenApiServiceInVersionBase>(), It.IsAny <IUnitOfWorkWritable>()))
            .Returns((IVmOpenApiServiceInVersionBase x, IUnitOfWorkWritable y) =>
            {
                if (!string.IsNullOrEmpty(x.StatutoryServiceGeneralDescriptionId))
                {
                    serviceVersioned.StatutoryServiceGeneralDescriptionId = x.StatutoryServiceGeneralDescriptionId.ParseToGuid();
                }
                serviceVersioned.PublishingStatusId = PublishingStatusCache.Get(x.PublishingStatus);
                if (x.ServiceNames?.Count > 0)
                {
                    serviceVersioned.ServiceNames = new List <ServiceName>();
                    x.ServiceNames.ForEach(n => serviceVersioned.ServiceNames.Add(new ServiceName {
                        Name = n.Value
                    }));
                }
                if (!string.IsNullOrEmpty(x.Type))
                {
                    serviceVersioned.TypeId = TypeCache.Get <ServiceType>(x.Type);
                }
                if (!string.IsNullOrEmpty(x.ServiceChargeType))
                {
                    serviceVersioned.ChargeTypeId = TypeCache.Get <ServiceChargeType>(x.ServiceChargeType);
                }

                return(serviceVersioned);
            });

            translationManagerVModelMockSetup.Setup(t => t.TranslateAll <VmOpenApiServiceServiceChannelInVersionBase, ServiceServiceChannel>(It.IsAny <List <V7VmOpenApiServiceServiceChannelAstiInBase> >(), It.IsAny <IUnitOfWorkWritable>()))
            .Returns((List <V7VmOpenApiServiceServiceChannelAstiInBase> x, IUnitOfWorkWritable y) =>
            {
                var connections = new List <ServiceServiceChannel>();
                x.ForEach(c =>
                {
                    var cv        = EntityGenerator.CreateEntity <ServiceChannelVersioned, ServiceChannel, ServiceChannelLanguageAvailability>(PublishedId, c.ChannelGuid, _channelVersionedId);
                    cv.UnificRoot = new ServiceChannel {
                        Id = c.ChannelGuid, Versions = new List <ServiceChannelVersioned> {
                            cv
                        }
                    };
                    var connection = new ServiceServiceChannel
                    {
                        ServiceChannelId = c.ChannelGuid,
                        ServiceChannel   = cv.UnificRoot
                    };
                    if (c.Description?.Count > 0)
                    {
                        connection.ServiceServiceChannelDescriptions = new List <ServiceServiceChannelDescription>();
                        c.Description.ForEach(d =>
                        {
                            var description = new ServiceServiceChannelDescription {
                                Description = d.Value
                            };
                            connection.ServiceServiceChannelDescriptions.Add(description);
                        });
                        connections.Add(connection);
                    }
                });
                return(connections);
            });

            ServiceRepoMock.Setup(g => g.All()).Returns((new List <ServiceVersioned> {
                serviceVersioned
            }).AsQueryable());
            ConnectionRepoMock.Setup(g => g.All()).Returns(connectionList.AsQueryable());

            //ServiceChannelRepoMock.Setup(g => g.All()).Returns((new List<ServiceChannelVersioned> { channelVersioned }).AsQueryable());
            unitOfWorkMockSetup.Setup(uw => uw.ApplyIncludes(
                                          It.IsAny <IQueryable <ServiceVersioned> >(),
                                          It.IsAny <Func <IQueryable <ServiceVersioned>, IQueryable <ServiceVersioned> > >(),
                                          It.IsAny <bool>()
                                          )).Returns(new List <ServiceVersioned> {
                serviceVersioned
            }.AsQueryable());

            unitOfWorkMockSetup.Setup(uw => uw.ApplyIncludes(
                                          It.IsAny <IQueryable <ServiceServiceChannel> >(),
                                          It.IsAny <Func <IQueryable <ServiceServiceChannel>, IQueryable <ServiceServiceChannel> > >(),
                                          It.IsAny <bool>()
                                          )).Returns(connectionList.AsQueryable());

            VersioningManagerMock.Setup(s => s.GetVersionId <ServiceVersioned>(unitOfWorkMockSetup.Object, _serviceId, PublishingStatus.Published, true)).Returns(_serviceVersionedId);

            translationManagerMockSetup.Setup(t => t.Translate <ServiceVersioned, VmOpenApiServiceVersionBase>(It.IsAny <ServiceVersioned>()))
            .Returns((ServiceVersioned sv) =>
            {
                var vm = new VmOpenApiServiceVersionBase()
                {
                    Id = sv.UnificRootId,
                    StatutoryServiceGeneralDescriptionId = sv.StatutoryServiceGeneralDescriptionId,
                    PublishingStatus = PublishingStatusCache.GetByValue(sv.PublishingStatusId)
                };
                if (sv.ServiceNames?.Count > 0)
                {
                    vm.ServiceNames = new List <VmOpenApiLocalizedListItem>();
                    sv.ServiceNames.ForEach(n => vm.ServiceNames.Add(new VmOpenApiLocalizedListItem {
                        Value = n.Name
                    }));
                }
                if (sv.UnificRoot?.ServiceServiceChannels?.Count > 0)
                {
                    vm.ServiceChannels = new List <V7VmOpenApiServiceServiceChannel>();
                    sv.UnificRoot.ServiceServiceChannels.ForEach(c =>
                    {
                        var channel = new V7VmOpenApiServiceServiceChannel
                        {
                            ServiceChannel = new VmOpenApiItem {
                                Id = c.ServiceChannelId
                            }
                        };
                        vm.ServiceChannels.Add(channel);
                    });
                }

                return(vm);
            });
        }