public void GetNewItemsTest() { // Arrange. var crEdit1 = Mock.Create<IEditableRoot>(); Mock.Arrange(() => crEdit1.Id).Returns(111); var crEdit2 = Mock.Create<IEditableRoot>(); Mock.Arrange(() => crEdit2.Id).Returns(222); SetupGetEditableRoot(ReferencedProcess, crEdit1, crEdit2); var retriever = new MultiCrossReferenceSourceItemsRetriever { DynamicTypeManager = _dtm, FieldName = TestsHelper.ExtractPropertyName(() => new TestEdit().MultiCR), ReferencedProcess = ReferencedProcess }; var cr1 = Mock.Create<ICrossRefItemInfo>(); Mock.Arrange(() => cr1.Id).Returns(111); var cr2 = Mock.Create<ICrossRefItemInfo>(); Mock.Arrange(() => cr2.Id).Returns(222); var oldItem = new TestEdit(); var newItem = new TestEdit(); newItem.MultiCR.NewItems.Add(cr1); newItem.MultiCR.NewItems.Add(cr2); // Act. var result = retriever.GetNewItems(newItem, oldItem); // Assert. Assert.AreEqual(2, result.Count); Assert.IsTrue(result.Contains(crEdit1)); Assert.IsTrue(result.Contains(crEdit2)); // Arrange. var innerEdit1 = Mock.Create<IEditableRoot>(); var innerEdit2 = Mock.Create<IEditableRoot>(); var innerEdit3 = Mock.Create<IEditableRoot>(); var innerRetriever = Mock.Create<ISourceItemsRetriever>(); Mock.Arrange(() => innerRetriever.GetAllItems(crEdit1)).Returns(new[] { innerEdit1 }); Mock.Arrange(() => innerRetriever.GetAllItems(crEdit2)).Returns(new[] { innerEdit2, innerEdit3 }); retriever.Subretriever = innerRetriever; // Act. result = retriever.GetNewItems(newItem, oldItem); // Assert. Assert.AreEqual(3, result.Count); Assert.IsTrue(result.Contains(innerEdit1)); Assert.IsTrue(result.Contains(innerEdit2)); Assert.IsTrue(result.Contains(innerEdit3)); }
public void InitializeTest() { // Arrange. const string ProcessName = "TestProcess"; var dtm = Mock.Create<IDynamicTypeManager>(); Mock.Arrange(() => dtm.GetEditableRootType(ProcessName)).Returns(typeof(TestEdit)); var retriever = new MultiCrossReferenceSourceItemsRetriever { DynamicTypeManager = dtm }; // Act. retriever.Initialize(ProcessName, TestsHelper.ExtractPropertyName(() => new TestEdit().MultiCR)); // Assert. Assert.AreEqual(TestsHelper.ExtractPropertyName(() => new TestEdit().MultiCR), retriever.FieldName); Assert.AreEqual(ReferencedProcess, retriever.ReferencedProcess); }