public void CanConnectTo_WhenConnectionValidatorIsUsed_Disallow() { var diagramViewModel = Mock.Create<IDiagramViewModel>(); var sourceConnector = new ExpressionConnector(ConnectorType.Out, new ConnectorOut(Mock.Create<ExpressionObjectBase>())); sourceConnector.DataType = NodeDataType.CrossReference; Mock.Arrange(() => sourceConnector.Connector).Returns(Mock.Create<IConnectorOut>); var vm = new ExpressionConnectorViewModel(sourceConnector, diagramViewModel); var destinationItemMock = Mock.Create<IConnectorViewModel>(); var destinationConnector = new ExpressionConnector(ConnectorType.In, new ConnectorIn(Mock.Create<ExpressionObjectBase>())); destinationConnector.DataType = NodeDataType.CrossReference; var connector = Mock.Create<IConnectorIn>(); var validator = new CommonConnectionValidator(); Mock.Arrange(() => validator.CanConnect(Arg.IsAny<IConnectorOut>(), Arg.IsAny<IConnectorIn>())) .Returns(ConnectivityState.Define(false, "Validation failed")); Mock.Arrange(() => connector.Validator).Returns(validator); Mock.Arrange(() => destinationConnector.Connector).Returns(connector); Mock.Arrange(() => destinationItemMock.Item).Returns(destinationConnector); var state = vm.CanConnectTo(destinationItemMock, Mock.Create<ICollection<IDiagramItemViewModel>>()); Assert.IsFalse(state.CanConnect); Assert.AreEqual("Validation failed", state.JustificationMessage); }
public void CanConnectTo_WhenTypeMismatch_Disallow() { var diagramViewModel = Mock.Create<IDiagramViewModel>(); var sourceConnector = new ExpressionConnector(ConnectorType.Out, new ConnectorOut(Mock.Create<ExpressionObjectBase>())); sourceConnector.DataType = NodeDataType.Choice; var vm = new ExpressionConnectorViewModel(sourceConnector, diagramViewModel); var destinationItemMock = Mock.Create<IConnectorViewModel>(); var destinationConnector = new ExpressionConnector(ConnectorType.In, new ConnectorIn(Mock.Create<ExpressionObjectBase>())); destinationConnector.DataType = NodeDataType.CrossReference; Mock.Arrange(() => destinationItemMock.Item).Returns(destinationConnector); var state = vm.CanConnectTo(destinationItemMock, Mock.Create<ICollection<IDiagramItemViewModel>>()); Assert.IsFalse(state.CanConnect); Assert.AreEqual( string.Format(CultureInfo.InvariantCulture, LanguageService.Translate("Warn_ExpressionBuilder_TypesAreIncompatible"), sourceConnector.DataType, destinationConnector.DataType), state.JustificationMessage); }