/// <summary> /// Imports records. /// </summary> /// <param name="records">The records to import</param> public void ImportRecords(IEnumerable <IObjectReader> records) { if (Reporter == null) { throw new InvalidOperationException(); } IReadOnlyCollection <ReaderEntityPair> newEntities = ReaderToEntityAdapter.CreateEntities(records, Reporter); using (_suppressWorkflows ? new WorkflowRunContext { DisableTriggers = true } : null) using (_mergeRecords ? new ResourceKeyHelper.OverwriteMatchingResources( ) : null) { SaveEntities(newEntities); } }
public void Test_CreateEntity(bool createEntities) { Mock <IObjectReader> mockReader; IObjectReader reader; Mock <IEntity> mockEntity; IEntity entity; ReaderToEntityAdapter adapter; List <MemberProcessor> memberProcessors; IImportReporter reporter = new Mock <IImportReporter>( ).Object; // Setup reader mockReader = new Mock <IObjectReader>(MockBehavior.Strict); mockReader.Setup(x => x.GetString("member1")).Returns("value1").Verifiable("member1 not called"); mockReader.Setup(x => x.GetString("member2")).Returns("value2").Verifiable("member2 not called"); reader = mockReader.Object; // Setup entity mockEntity = new Mock <IEntity>(MockBehavior.Strict); mockEntity.Setup(x => x.SetField(1, "value1")).Verifiable("field1 not set"); mockEntity.Setup(x => x.SetField(2, "value2")).Verifiable("field2 not set"); entity = mockEntity.Object; // Set up adapter int called = 0; memberProcessors = new List <MemberProcessor>( ); memberProcessors.Add(new MemberProcessor((r, e, rpt) => { string value = r.GetString("member1"); e.SetField(1, value); called++; })); memberProcessors.Add(new MemberProcessor((r, e, rpt) => { string value = r.GetString("member2"); e.SetField(2, value); called++; })); Func <IEntity> instanceFactory = () => mockEntity.Object; adapter = new ReaderToEntityAdapter(memberProcessors, instanceFactory, null); // Go! IEntity result; if (createEntities) { result = adapter.CreateEntities(reader.ToEnumerable( ), reporter).First( ).Entity; } else { result = adapter.CreateEntity(reader, ConnectorRequestExceptionReporter.Instance); } Assert.That(result, Is.SameAs(mockEntity.Object)); // Verify everything called mockReader.VerifyAll( ); mockEntity.VerifyAll( ); Assert.That(called, Is.EqualTo(2), "Processor should be called twice."); // Entity.Save should not be called, which gets verified here because of Strict mode. }