public void CanModify() { // Arrange var serviceId = Guid.NewGuid(); var channelId = Guid.NewGuid(); var organizationId = Guid.NewGuid(); var relation = new V7VmOpenApiServiceServiceChannelAstiInBase { ServiceId = serviceId.ToString(), ServiceChannelId = channelId.ToString() }; var unitOfWork = unitOfWorkMockSetup.Object; var contextManager = new TestContextManager(unitOfWork, unitOfWork); var serviceUtilities = new ServiceUtilities(UserIdentificationMock.Object, LockingManager, contextManager, UserOrganizationService, VersioningManager, UserInfoService, UserOrganizationChecker); ServiceServiceMock.Setup(s => s.GetServiceByIdSimple(serviceId, true)) .Returns(new VmOpenApiServiceVersionBase() { PublishingStatus = PublishingStatus.Published.ToString() }); ChannelServiceMock.Setup(s => s.GetServiceChannelByIdSimple(channelId, true)) .Returns(new VmOpenApiServiceChannel() { Id = channelId, IsVisibleForAll = false, OrganizationId = organizationId, ServiceChannelType = ServiceChannelTypeEnum.ServiceLocation.ToString(), Security = new VmSecurityOwnOrganization { IsOwnOrganization = true } }); //UserOrganizationServiceMock.Setup(s => s.GetAllUserOrganizations(unitOfWork)).Returns(new List<Guid>() { organizationId }); translationManagerVModelMockSetup.Setup(s => s.Translate <IVmOpenApiServiceServiceChannelInVersionBase, ServiceServiceChannel>(relation, unitOfWork)) .Returns(new ServiceServiceChannel()); var service = new ServiceAndChannelService(contextManager, translationManagerMockSetup.Object, translationManagerVModelMockSetup.Object, Logger, serviceUtilities, DataUtils, ServiceServiceMock.Object, ChannelService, PublishingStatusCache, VersioningManager, UserOrganizationChecker, CacheManager, UserOrganizationServiceMock.Object); // Act var result = service.SaveServicesAndChannels(new List <V7VmOpenApiServiceServiceChannelAstiInBase> { relation }); // Assert result.Should().NotBeNull(); var list = Assert.IsType <List <string> >(result); list.Count.Should().Be(1); list.FirstOrDefault().Should().EndWith("added or updated."); translationManagerVModelMockSetup.Verify(x => x.Translate <IVmOpenApiServiceServiceChannelInVersionBase, ServiceServiceChannel>(It.IsAny <VmOpenApiServiceServiceChannelInVersionBase>(), unitOfWork), Times.Once()); }
private string SaveServiceServiceChannel(V7VmOpenApiServiceServiceChannelAstiInBase serviceServiceChannel) { if (!serviceServiceChannel.ChannelGuid.IsAssigned()) { serviceServiceChannel.ChannelGuid = serviceServiceChannel.ServiceChannelId.ParseToGuidWithExeption(); serviceServiceChannel.ServiceGuid = serviceServiceChannel.ServiceId.ParseToGuidWithExeption(); } var currentVersion = serviceService.GetServiceByIdSimple(serviceServiceChannel.ServiceGuid); if (currentVersion == null || string.IsNullOrEmpty(currentVersion.PublishingStatus)) { return(string.Format(CoreMessages.OpenApi.EntityNotFound, "Service", serviceServiceChannel.ServiceGuid)); } else if (currentVersion.PublishingStatus != PublishingStatus.Draft.ToString() && currentVersion.PublishingStatus != PublishingStatus.Published.ToString()) { return($"Publishing status for service '{serviceServiceChannel.ServiceGuid}' is {currentVersion.PublishingStatus}. You cannot update service!"); } var channel = channelService.GetServiceChannelByIdSimple(serviceServiceChannel.ChannelGuid); if (channel == null || !channel.Id.IsAssigned()) { return(string.Format(CoreMessages.OpenApi.EntityNotFound, "Service channel", serviceServiceChannel.ChannelGuid)); } string msg = null; contextManager.ExecuteWriter(unitOfWork => { try { CheckChannelData(unitOfWork, serviceServiceChannel.ChannelGuid, serviceServiceChannel.IsASTIConnection, serviceServiceChannel.ServiceHours, serviceServiceChannel.ContactDetails); var result = TranslationManagerToEntity.Translate <IVmOpenApiServiceServiceChannelInVersionBase, ServiceServiceChannel>(serviceServiceChannel, unitOfWork); unitOfWork.Save(); msg = string.Format(CoreMessages.OpenApi.ServiceServiceChannelAdded, serviceServiceChannel.ChannelGuid, serviceServiceChannel.ServiceGuid); } catch (Exception ex) { msg = ex.Message; } }); return(msg); }