public void VerifyThatModifyShiftCopyOperationsWorks2() { // all the things cannot be copied this.permissionService.Setup(x => x.CanWrite(It.Is <ClassKind>(cl => cl != ClassKind.ParameterSubscription), It.IsAny <Thing>())).Returns(true); this.session.Setup(x => x.OpenIterations).Returns( new Dictionary <Iteration, Tuple <DomainOfExpertise, Participant> > { { this.iteration1, new Tuple <DomainOfExpertise, Participant>(domain1, null) }, { this.iteration2, new Tuple <DomainOfExpertise, Participant>(domain2, null) } }); var iteration2Clone = this.iteration2.Clone(false); var defClone = this.rootDef.Clone(false); defClone.Iid = Guid.NewGuid(); iteration2Clone.Element.Add(defClone); var transactionContext = TransactionContextResolver.ResolveContext(this.iteration2); var context = transactionContext.ContextRoute(); var operationContainer = new OperationContainer(context, this.model2.RevisionNumber); operationContainer.AddOperation(new Operation(this.iteration2.ToDto(), iteration2Clone.ToDto(), OperationKind.Update)); operationContainer.AddOperation(new Operation(this.rootDef.ToDto(), defClone.ToDto(), OperationKind.Copy)); var copyHandler = new CopyOperationHandler(this.session.Object); copyHandler.ModifiedCopyOperation(operationContainer); var operations = operationContainer.Operations.ToList(); Assert.AreEqual(13, operations.Count); Assert.IsNotEmpty(operationContainer.Context); }
public void VerifyThatDryCopyDoesNotCopySubscriptionWithInactiveDomain() { this.permissionService.Setup(x => x.CanWrite(It.IsAny <ClassKind>(), It.IsAny <Thing>())).Returns(true); this.session.Setup(x => x.OpenIterations).Returns( new Dictionary <Iteration, Tuple <DomainOfExpertise, Participant> > { { this.iteration1, new Tuple <DomainOfExpertise, Participant>(domain1, null) }, { this.iteration2, new Tuple <DomainOfExpertise, Participant>(domain1, null) } }); this.subscription1.Owner = this.domain3; var iteration2Clone = this.iteration2.Clone(false); var defClone = this.rootDef.Clone(false); defClone.Iid = Guid.NewGuid(); iteration2Clone.Element.Add(defClone); var transactionContext = TransactionContextResolver.ResolveContext(this.iteration2); var context = transactionContext.ContextRoute(); var operationContainer = new OperationContainer(context, this.model2.RevisionNumber); operationContainer.AddOperation(new Operation(this.iteration2.ToDto(), iteration2Clone.ToDto(), OperationKind.Update)); operationContainer.AddOperation(new Operation(this.rootDef.ToDto(), defClone.ToDto(), OperationKind.CopyDefaultValuesChangeOwner)); var copyHandler = new CopyOperationHandler(this.session.Object); copyHandler.ModifiedCopyOperation(operationContainer); var operations = operationContainer.Operations.ToList(); Assert.AreEqual(13, operations.Count); Assert.IsNotEmpty(operationContainer.Context); // check that operation container is correctly built var ownedThings = operationContainer.Operations.Select(x => x.ModifiedThing) .Where(x => x.ClassKind != ClassKind.ParameterSubscription) .OfType <Dto.IOwnedThing>() .ToList(); var dtoOwner = ownedThings.Select(x => x.Owner).Distinct().Single(); Assert.AreEqual(dtoOwner, this.domain1.Iid); var subCount = operationContainer.Operations.Select(x => x.ModifiedThing) .OfType <Dto.ParameterSubscription>().Count(); Assert.AreEqual(0, subCount); }