public void Setup() { this.session = new Mock <ISession>(); this.assembler = new Assembler(this.uri); this.permissionService = new Mock <IPermissionService>(); this.session.Setup(x => x.PermissionService).Returns(this.permissionService.Object); this.thingDialogNavigationService = new Mock <IThingDialogNavigationService>(); this.panelNavigationService = new Mock <IPanelNavigationService>(); this.dropinfo = new Mock <IDropInfo>(); this.cache = this.assembler.Cache; this.sitedir = new SiteDirectory(Guid.NewGuid(), this.cache, this.uri); this.modelsetup = new EngineeringModelSetup(Guid.NewGuid(), this.cache, this.uri) { Name = "model" }; this.iterationsetup = new IterationSetup(Guid.NewGuid(), this.cache, this.uri); this.person = new Person(Guid.NewGuid(), this.cache, this.uri); this.domain = new DomainOfExpertise(Guid.NewGuid(), this.cache, this.uri) { Name = "domain" }; this.participant = new Participant(Guid.NewGuid(), this.cache, this.uri) { Person = this.person, SelectedDomain = this.domain }; this.sitedir.Model.Add(this.modelsetup); this.sitedir.Person.Add(this.person); this.sitedir.Domain.Add(this.domain); this.modelsetup.IterationSetup.Add(this.iterationsetup); this.modelsetup.Participant.Add(this.participant); this.model = new EngineeringModel(Guid.NewGuid(), this.cache, this.uri) { EngineeringModelSetup = this.modelsetup }; this.iteration = new Iteration(Guid.NewGuid(), this.cache, this.uri) { IterationSetup = this.iterationsetup }; this.model.Iteration.Add(this.iteration); this.session.Setup(x => x.RetrieveSiteDirectory()).Returns(this.sitedir); this.session.Setup(x => x.ActivePerson).Returns(this.person); this.session.Setup(x => x.OpenIterations).Returns(new Dictionary <Iteration, Tuple <DomainOfExpertise, Participant> >()); this.session.Setup(x => x.Assembler).Returns(this.assembler); this.cache.TryAdd(new CacheKey(this.iteration.Iid, null), new Lazy <Thing>(() => this.iteration)); }
public async Task VerifyThatSiteDirectoryCanBeOpened() { await this.session.Open(); Assert.AreEqual(62, this.session.Assembler.Cache.Count); var iterationSetups = this.session.Assembler.Cache.Select(x => x.Value) .Where(lazy => lazy.Value.ClassKind == ClassKind.IterationSetup) .Select(lazy => lazy.Value) .Cast <CDP4Common.SiteDirectoryData.IterationSetup>(); var iterationSetupToRead = iterationSetups.Single(x => x.Iid == Guid.Parse("11111111-0c20-417a-a83f-c80fbc93e394")); var engineeringModelSetup = (CDP4Common.SiteDirectoryData.EngineeringModelSetup)iterationSetupToRead.Container; var domainsOfExpertise = this.session.Assembler.Cache.Select(x => x.Value) .Where(lazy => lazy.Value.ClassKind == ClassKind.DomainOfExpertise) .Select(lazy => lazy.Value) .Cast <CDP4Common.SiteDirectoryData.DomainOfExpertise>(); var domainOfExpertise = domainsOfExpertise.Single(x => x.Iid == Guid.Parse("8790fe92-d1fa-42ea-9520-e0ddac52f1ad")); var model = new CDP4Common.EngineeringModelData.EngineeringModel(engineeringModelSetup.EngineeringModelIid, this.session.Assembler.Cache, this.session.Credentials.Uri) { EngineeringModelSetup = engineeringModelSetup }; var iteration = new CDP4Common.EngineeringModelData.Iteration(iterationSetupToRead.IterationIid, this.session.Assembler.Cache, this.session.Credentials.Uri); model.Iteration.Add(iteration); await this.session.Read(iteration, domainOfExpertise); Assert.AreEqual(93, this.session.Assembler.Cache.Count); var siteReferenceDataLibrary = this.session.Assembler.Cache.Select(x => x.Value) .Where(lazy => lazy.Value.ClassKind == ClassKind.SiteReferenceDataLibrary) .Select(lazy => lazy.Value) .Cast <CDP4Common.SiteDirectoryData.SiteReferenceDataLibrary>().Single(x => x.Iid == Guid.Parse("bff9f871-3b7f-4e57-ac82-5ab499f9baf5")); Assert.IsNotNull(siteReferenceDataLibrary); Assert.IsNotEmpty(siteReferenceDataLibrary.ParameterType); var simpleQuantityKind = siteReferenceDataLibrary.ParameterType.Single(x => x.Iid == Guid.Parse("66766f44-0a0b-4e0a-9bc7-8ae027c2da5c")); Assert.AreEqual("length", simpleQuantityKind.Name); Assert.AreEqual("l", simpleQuantityKind.ShortName); }
public void Verify_that_OperationContainerFileVerification_throws_no_exception_when_data_is_complete() { var siteDirectory = new CDP4Common.SiteDirectoryData.SiteDirectory(Guid.NewGuid(), null, null); var engineeringModelSetup = new CDP4Common.SiteDirectoryData.EngineeringModelSetup(Guid.NewGuid(), null, null); var iterationSetup = new CDP4Common.SiteDirectoryData.IterationSetup(Guid.NewGuid(), null, null); siteDirectory.Model.Add(engineeringModelSetup); engineeringModelSetup.IterationSetup.Add(iterationSetup); var engineeringModel = new CDP4Common.EngineeringModelData.EngineeringModel(Guid.NewGuid(), null, null); engineeringModel.EngineeringModelSetup = engineeringModelSetup; var iteration = new CDP4Common.EngineeringModelData.Iteration(Guid.NewGuid(), null, null); iteration.IterationSetup = iterationSetup; var commonFileStore = new CDP4Common.EngineeringModelData.CommonFileStore(Guid.NewGuid(), null, null); engineeringModel.Iteration.Add(iteration); engineeringModel.CommonFileStore.Add(commonFileStore); var context = TransactionContextResolver.ResolveContext(commonFileStore); var transaction = new ThingTransaction(context); var commonFileStoreClone = commonFileStore.Clone(false); var file = new CDP4Common.EngineeringModelData.File(Guid.NewGuid(), null, null); var fileRevision = new CDP4Common.EngineeringModelData.FileRevision(Guid.NewGuid(), null, null); fileRevision.ContentHash = "1B686ADFA2CAE870A96E5885087337C032781BE6"; transaction.Create(file, commonFileStoreClone); transaction.Create(fileRevision, file); var operationContainer = transaction.FinalizeTransaction(); var files = new List <string> { this.filePath }; var testDal = new TestDal(this.credentials); Assert.DoesNotThrow(() => testDal.TestOperationContainerFileVerification(operationContainer, files)); }
public async Task Verify_that_when_active_person_is_null_Iteration_is_not_read() { var iterationSetup = new CDP4Common.SiteDirectoryData.IterationSetup(Guid.NewGuid(), null, null) { FrozenOn = DateTime.Now, IterationIid = Guid.NewGuid() }; var activeDomain = new DomainOfExpertise(Guid.NewGuid(), null, null); var model = new EngineeringModel(Guid.NewGuid(), 1); var iteration = new Iteration(Guid.NewGuid(), 10) { IterationSetup = iterationSetup.Iid }; var iterationToOpen = new CDP4Common.EngineeringModelData.Iteration(iteration.Iid, null, null); var modelToOpen = new CDP4Common.EngineeringModelData.EngineeringModel(model.Iid, null, null); iterationToOpen.Container = modelToOpen; Assert.ThrowsAsync <InvalidOperationException>(async() => await this.session.Read(iterationToOpen, activeDomain)); }
public async Task VerifyThatReadIterationWorks() { var siteDir = new CDP4Common.SiteDirectoryData.SiteDirectory(Guid.NewGuid(), this.session.Assembler.Cache, this.uri); var JohnDoe = new CDP4Common.SiteDirectoryData.Person(this.person.Iid, this.session.Assembler.Cache, this.uri) { ShortName = "John" }; var modelSetup = new CDP4Common.SiteDirectoryData.EngineeringModelSetup(Guid.NewGuid(), this.session.Assembler.Cache, this.uri); var iterationSetup = new CDP4Common.SiteDirectoryData.IterationSetup(Guid.NewGuid(), this.session.Assembler.Cache, this.uri) { FrozenOn = DateTime.Now, IterationIid = Guid.NewGuid() }; var mrdl = new ModelReferenceDataLibrary(Guid.NewGuid(), this.session.Assembler.Cache, this.uri); var srdl = new SiteReferenceDataLibrary(Guid.NewGuid(), this.session.Assembler.Cache, this.uri); var activeDomain = new DomainOfExpertise(Guid.NewGuid(), this.session.Assembler.Cache, this.uri); mrdl.RequiredRdl = srdl; modelSetup.RequiredRdl.Add(mrdl); modelSetup.IterationSetup.Add(iterationSetup); siteDir.Model.Add(modelSetup); siteDir.SiteReferenceDataLibrary.Add(srdl); siteDir.Domain.Add(activeDomain); siteDir.Person.Add(JohnDoe); this.session.Assembler.Cache.TryAdd(new CacheKey(siteDir.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => siteDir)); this.session.Assembler.Cache.TryAdd(new CacheKey(JohnDoe.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => JohnDoe)); this.session.Assembler.Cache.TryAdd(new CacheKey(modelSetup.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => modelSetup)); this.session.Assembler.Cache.TryAdd(new CacheKey(mrdl.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => mrdl)); this.session.Assembler.Cache.TryAdd(new CacheKey(srdl.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => srdl)); this.session.Assembler.Cache.TryAdd(new CacheKey(siteDir.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => siteDir)); this.session.Assembler.Cache.TryAdd(new CacheKey(iterationSetup.Iid, null), new Lazy <CDP4Common.CommonData.Thing>(() => iterationSetup)); this.session.GetType().GetProperty("ActivePerson").SetValue(this.session, JohnDoe, null); var participant = new CDP4Common.SiteDirectoryData.Participant(Guid.NewGuid(), this.session.Assembler.Cache, this.uri) { Person = this.session.ActivePerson }; modelSetup.Participant.Add(participant); var model = new EngineeringModel(Guid.NewGuid(), 1); var iteration = new Iteration(iterationSetup.IterationIid, 10) { IterationSetup = iterationSetup.Iid }; model.Iteration.Add(iteration.Iid); model.EngineeringModelSetup = modelSetup.Iid; var readOutput = new List <Thing> { model, iteration }; var readTaskCompletionSource = new TaskCompletionSource <IEnumerable <Thing> >(); readTaskCompletionSource.SetResult(readOutput); this.mockedDal.Setup(x => x.Read(It.IsAny <Iteration>(), It.IsAny <CancellationToken>(), It.IsAny <IQueryAttributes>())).Returns(readTaskCompletionSource.Task); var iterationToOpen = new CDP4Common.EngineeringModelData.Iteration(iteration.Iid, null, null); var modelToOpen = new CDP4Common.EngineeringModelData.EngineeringModel(model.Iid, null, null); iterationToOpen.Container = modelToOpen; await this.session.Read(iterationToOpen, activeDomain); this.mockedDal.Verify(x => x.Read(It.Is <Iteration>(i => i.Iid == iterationToOpen.Iid), It.IsAny <CancellationToken>(), It.IsAny <IQueryAttributes>()), Times.Once); var pair = this.session.OpenIterations.Single(); Assert.AreEqual(pair.Value.Item1, activeDomain); await this.session.Read(iterationToOpen, activeDomain); this.mockedDal.Verify(x => x.Read(It.Is <Iteration>(i => i.Iid == iterationToOpen.Iid), It.IsAny <CancellationToken>(), It.IsAny <IQueryAttributes>()), Times.Exactly(2)); pair = this.session.OpenIterations.Single(); Assert.AreEqual(pair.Value.Item1, activeDomain); var selectedDomain = this.session.QuerySelectedDomainOfExpertise(iterationToOpen); Assert.AreEqual(activeDomain.Iid, selectedDomain.Iid); this.mockedDal.Setup(x => x.Read(It.IsAny <Thing>(), It.IsAny <CancellationToken>(), It.IsAny <IQueryAttributes>())).Returns <Thing, CancellationToken, IQueryAttributes>( (x, y, z) => { // the method with iteration is called var xvariable = x; return(readTaskCompletionSource.Task); }); await this.session.Refresh(); this.mockedDal.Verify(x => x.Read <Thing>(It.IsAny <Thing>(), It.IsAny <CancellationToken>(), It.IsAny <IQueryAttributes>()), Times.Exactly(1)); Assert.ThrowsAsync <InvalidOperationException>(async() => await this.session.Read(iterationToOpen, null)); }
public async Task VerifyThatSiteRdlRequiredByModelRdlCannotBeClosed() { var rdlDto = new CDP4Common.DTO.SiteReferenceDataLibrary { Iid = Guid.NewGuid() }; var siteDirDto = new CDP4Common.DTO.SiteDirectory { Iid = Guid.NewGuid() }; var requiredRdlDto = new CDP4Common.DTO.SiteReferenceDataLibrary() { Iid = Guid.NewGuid() }; rdlDto.RequiredRdl = requiredRdlDto.Iid; siteDirDto.SiteReferenceDataLibrary.Add(rdlDto.Iid); siteDirDto.SiteReferenceDataLibrary.Add(requiredRdlDto.Iid); siteDirDto.Person.Add(this.person.Iid); var mrdl = new CDP4Common.DTO.ModelReferenceDataLibrary(Guid.NewGuid(), 0) { RequiredRdl = requiredRdlDto.Iid }; var modelsetup = new EngineeringModelSetup(Guid.NewGuid(), 0); modelsetup.RequiredRdl.Add(mrdl.Iid); var model = new EngineeringModel(Guid.NewGuid(), 0) { EngineeringModelSetup = modelsetup.Iid }; var iteration = new Iteration(Guid.NewGuid(), 0); model.Iteration.Add(iteration.Iid); siteDirDto.Model.Add(modelsetup.Iid); var readReturn = new List <Thing> { siteDirDto, mrdl, modelsetup, model, iteration, this.person }; var mrdlpoco = new ModelReferenceDataLibrary(mrdl.Iid, null, null); var modelsetuppoco = new CDP4Common.SiteDirectoryData.EngineeringModelSetup(modelsetup.Iid, null, null); modelsetuppoco.RequiredRdl.Add(mrdlpoco); var participant = new CDP4Common.DTO.Participant(Guid.NewGuid(), 0) { Person = this.person.Iid }; modelsetup.Participant.Add(participant.Iid); var modelPoco = new CDP4Common.EngineeringModelData.EngineeringModel(model.Iid, null, null) { EngineeringModelSetup = modelsetuppoco }; var iterationPoco = new CDP4Common.EngineeringModelData.Iteration(iteration.Iid, null, null); modelPoco.Iteration.Add(iterationPoco); var readTaskCompletionSource = new TaskCompletionSource <IEnumerable <Thing> >(); readTaskCompletionSource.SetResult(readReturn); this.mockedDal.Setup( x => x.Read(It.IsAny <Iteration>(), It.IsAny <CancellationToken>(), null)) .Returns(readTaskCompletionSource.Task); var thingsToAdd = new List <Thing>() { siteDirDto, requiredRdlDto, rdlDto, this.person, participant, modelsetup }; await this.session.Assembler.Synchronize(thingsToAdd); var JohnDoe = this.session.RetrieveSiteDirectory().Person.Single(x => x.Iid == this.person.Iid); this.session.GetType().GetProperty("ActivePerson").SetValue(this.session, JohnDoe, null); await this.session.Read(iterationPoco, null); Assert.AreEqual(2, this.session.OpenReferenceDataLibraries.Count()); Lazy <CDP4Common.CommonData.Thing> requiredRdlToClose; this.session.Assembler.Cache.TryGetValue(new CacheKey(requiredRdlDto.Iid, null), out requiredRdlToClose); await this.session.CloseRdl((SiteReferenceDataLibrary)requiredRdlToClose.Value); Assert.AreEqual(2, this.session.OpenReferenceDataLibraries.Count()); }
private void InstantiateThings() { var siteDirectory = new CDP4Common.SiteDirectoryData.SiteDirectory(Guid.NewGuid(), null, null); var domain1 = new CDP4Common.SiteDirectoryData.DomainOfExpertise(Guid.NewGuid(), null, null); siteDirectory.Domain.Add(domain1); var domain2 = new CDP4Common.SiteDirectoryData.DomainOfExpertise(Guid.NewGuid(), null, null); siteDirectory.Domain.Add(domain2); var alias = new CDP4Common.CommonData.Alias(Guid.NewGuid(), null, null); domain1.Alias.Add(alias); var engineeringModelSetup = new CDP4Common.SiteDirectoryData.EngineeringModelSetup(Guid.NewGuid(), null, null); siteDirectory.Model.Add(engineeringModelSetup); var iterationSetup = new CDP4Common.SiteDirectoryData.IterationSetup(Guid.NewGuid(), null, null); engineeringModelSetup.IterationSetup.Add(iterationSetup); var participantRole1 = new CDP4Common.SiteDirectoryData.ParticipantRole(Guid.NewGuid(), null, null); siteDirectory.ParticipantRole.Add(participantRole1); var participantRole2 = new CDP4Common.SiteDirectoryData.ParticipantRole(Guid.NewGuid(), null, null); siteDirectory.ParticipantRole.Add(participantRole2); var person1 = new CDP4Common.SiteDirectoryData.Person(Guid.NewGuid(), null, null); siteDirectory.Person.Add(person1); var personRole1 = new CDP4Common.SiteDirectoryData.PersonRole(Guid.NewGuid(), null, null); siteDirectory.PersonRole.Add(personRole1); var siteReferenceDataLibrary1 = new CDP4Common.SiteDirectoryData.SiteReferenceDataLibrary(Guid.NewGuid(), null, null); siteDirectory.SiteReferenceDataLibrary.Add(siteReferenceDataLibrary1); var engineeringModel = new CDP4Common.EngineeringModelData.EngineeringModel(Guid.NewGuid(), null, null); engineeringModel.EngineeringModelSetup = engineeringModelSetup; engineeringModelSetup.EngineeringModelIid = engineeringModel.Iid; this.iteration = new CDP4Common.EngineeringModelData.Iteration(Guid.NewGuid(), null, null); this.iteration.IterationSetup = iterationSetup; iterationSetup.IterationIid = this.iteration.Iid; engineeringModel.Iteration.Add(this.iteration); var modelReferenceDataLibrary = new CDP4Common.SiteDirectoryData.ModelReferenceDataLibrary(Guid.NewGuid(), null, null); modelReferenceDataLibrary.RequiredRdl = siteReferenceDataLibrary1; engineeringModelSetup.RequiredRdl.Add(modelReferenceDataLibrary); var participant = new CDP4Common.SiteDirectoryData.Participant(Guid.NewGuid(), null, null); participant.Person = person1; participant.Domain.Add(domain1); participant.Role = participantRole1; engineeringModelSetup.Participant.Add(participant); var elementDefinition1 = new CDP4Common.EngineeringModelData.ElementDefinition(Guid.NewGuid(), null, null); this.iteration.Element.Add(elementDefinition1); var elementDefinition2 = new CDP4Common.EngineeringModelData.ElementDefinition(Guid.NewGuid(), null, null); this.iteration.Element.Add(elementDefinition2); var elementUsage = new CDP4Common.EngineeringModelData.ElementUsage(Guid.NewGuid(), null, null); elementDefinition1.ContainedElement.Add(elementUsage); elementUsage.ElementDefinition = elementDefinition2; }
/// <summary> /// Build operation containes structure that will be serialized /// </summary> /// <returns> /// List of <see cref="OperationContainer"/> /// </returns> private IEnumerable <OperationContainer> BuildOperationContainers() { var cache = new ConcurrentDictionary <CacheKey, Lazy <Thing> >(); // DomainOfExpertise var domain = new DomainOfExpertise(Guid.NewGuid(), cache, this.credentials.Uri) { ShortName = "SYS" }; this.siteDirectoryData.Domain.Add(domain); // PersonRole var role = new PersonRole(Guid.NewGuid(), null, null); this.siteDirectoryData.PersonRole.Add(role); this.siteDirectoryData.DefaultPersonRole = role; // ParticipantRole var participantRole = new ParticipantRole(Guid.Empty, null, null); this.siteDirectoryData.ParticipantRole.Add(participantRole); this.siteDirectoryData.DefaultParticipantRole = participantRole; // Organization var organization = new Organization(Guid.NewGuid(), null, null) { Container = this.siteDirectoryData }; // Iteration var iterationIid = new Guid("b58ea73d-350d-4520-b9d9-a52c75ac2b5d"); var iterationSetup = new IterationSetup(Guid.NewGuid(), 0); var iterationSetupPoco = new CDP4Common.SiteDirectoryData.IterationSetup(iterationSetup.Iid, cache, this.credentials.Uri); // EngineeringModel var model = new EngineeringModel(Guid.NewGuid(), cache, this.credentials.Uri); var modelSetup = new CDP4Common.SiteDirectoryData.EngineeringModelSetup(); modelSetup.ActiveDomain.Add(domain); var requiredRdl = new ModelReferenceDataLibrary(); var person = new Person { ShortName = "admin", Organization = organization }; var participant = new Participant(Guid.NewGuid(), cache, this.credentials.Uri) { Person = person }; participant.Person.Role = role; participant.Role = participantRole; participant.Domain.Add(domain); modelSetup.Participant.Add(participant); var lazyPerson = new Lazy <Thing>(() => person); var iterationPoco = new CDP4Common.EngineeringModelData.Iteration(iterationIid, cache, this.credentials.Uri) { IterationSetup = iterationSetupPoco }; model.Iteration.Add(iterationPoco); var iteration = (Iteration)iterationPoco.ToDto(); model.EngineeringModelSetup = modelSetup; this.siteDirectoryData.Model.Add(modelSetup); modelSetup.RequiredRdl.Add(requiredRdl); modelSetup.IterationSetup.Add(iterationSetupPoco); cache.TryAdd(new CacheKey(person.Iid, this.siteDirectoryData.Iid), lazyPerson); this.siteDirectoryData.Cache = cache; iteration.IterationSetup = iterationSetup.Iid; var iterationClone = iteration.DeepClone <Iteration>(); var operation = new Operation(iteration, iterationClone, OperationKind.Update); var operationContainers = new[] { new OperationContainer("/EngineeringModel/" + model.Iid + "/iteration/" + iteration.Iid, 0) }; operationContainers.Single().AddOperation(operation); return(operationContainers); }
public async Task VerifyWriteEnumerableOperationContainer() { var cache = new ConcurrentDictionary <CacheKey, Lazy <Thing> >(); var files = new[] { "file1" }; Assert.Throws <ArgumentNullException>(() => this.dal.Write((IEnumerable <OperationContainer>)null, files)); Assert.Throws <ArgumentException>(() => this.dal.Write(new List <OperationContainer>(), files)); var operationContainers = new[] { new OperationContainer("/SiteDirectory/00000000-0000-0000-0000-000000000000", 0) }; Assert.Throws <ArgumentException>(() => this.dal.Write(operationContainers, files)); var domainSys = new DomainOfExpertise(Guid.NewGuid(), cache, this.credentials.Uri) { ShortName = "SYS" }; this.siteDirectoryData.Domain.Add(domainSys); var domainAer = new DomainOfExpertise(Guid.NewGuid(), cache, this.credentials.Uri) { ShortName = "AER" }; this.siteDirectoryData.Domain.Add(domainAer); var domainProp = new DomainOfExpertise(Guid.NewGuid(), cache, this.credentials.Uri) { ShortName = "PROP" }; this.siteDirectoryData.Domain.Add(domainProp); // PersonRole var role = new PersonRole(Guid.NewGuid(), null, null); this.siteDirectoryData.PersonRole.Add(role); this.siteDirectoryData.DefaultPersonRole = role; // ParticipantRole var participantRole = new ParticipantRole(Guid.Empty, null, null); this.siteDirectoryData.ParticipantRole.Add(participantRole); this.siteDirectoryData.DefaultParticipantRole = participantRole; // Organization var organization = new Organization(Guid.NewGuid(), null, null) { Container = this.siteDirectoryData }; var sitedirectoryDto = (CDP4Common.DTO.SiteDirectory) this.siteDirectoryData.ToDto(); var clone = sitedirectoryDto.DeepClone <CDP4Common.DTO.SiteDirectory>(); var operation = new Operation(sitedirectoryDto, clone, OperationKind.Update); Assert.AreEqual(0, operationContainers.Single().Operations.Count()); operationContainers.Single().AddOperation(operation); Assert.AreEqual(1, operationContainers.Single().Operations.Count()); Assert.Throws <ArgumentException>(() => this.dal.Write(operationContainers, files)); operationContainers.Single().RemoveOperation(operation); Assert.AreEqual(0, operationContainers.Single().Operations.Count()); var iterationIid = new Guid("b58ea73d-350d-4520-b9d9-a52c75ac2b5d"); var iterationSetup = new IterationSetup(Guid.NewGuid(), 0); var iterationSetupPoco = new CDP4Common.SiteDirectoryData.IterationSetup(iterationSetup.Iid, cache, this.credentials.Uri); var model = new EngineeringModel(Guid.NewGuid(), cache, this.credentials.Uri); var modelSetup = new CDP4Common.SiteDirectoryData.EngineeringModelSetup(); modelSetup.ActiveDomain.Add(domainSys); var source = new ReferenceSource(Guid.NewGuid(), cache, this.credentials.Uri) { Publisher = new Organization(Guid.NewGuid(), cache, this.credentials.Uri) { Container = this.siteDirectoryData } }; var requiredRdl = new ModelReferenceDataLibrary { RequiredRdl = new SiteReferenceDataLibrary(), ReferenceSource = { source } }; var person = new Person { ShortName = "admin", Organization = organization, DefaultDomain = domainAer }; var participant = new Participant(Guid.NewGuid(), cache, this.credentials.Uri) { Person = person }; participant.Person.Role = role; participant.Role = participantRole; participant.Domain.Add(domainSys); participant.Domain.Add(domainProp); modelSetup.Participant.Add(participant); var lazyPerson = new Lazy <Thing>(() => person); var iterationPoco = new CDP4Common.EngineeringModelData.Iteration(iterationIid, cache, this.credentials.Uri) { IterationSetup = iterationSetupPoco }; model.Iteration.Add(iterationPoco); var iteration = (Iteration)iterationPoco.ToDto(); model.EngineeringModelSetup = modelSetup; this.siteDirectoryData.Model.Add(modelSetup); modelSetup.RequiredRdl.Add(requiredRdl); modelSetup.IterationSetup.Add(iterationSetupPoco); cache.TryAdd(new CacheKey(person.Iid, this.siteDirectoryData.Iid), lazyPerson); this.siteDirectoryData.Cache = cache; iteration.IterationSetup = iterationSetup.Iid; var clone1 = iteration.DeepClone <Iteration>(); operation = new Operation(iteration, clone1, OperationKind.Update); var operationContainer = new OperationContainer("/EngineeringModel/" + model.Iid + "/iteration/" + iteration.Iid, 0); operationContainer.AddOperation(operation); operationContainers = new[] { operationContainer, operationContainer }; Assert.IsEmpty(await this.dal.Write(operationContainers, files)); }