public void TestFilterCommandTest() { // Arrange. const string Filter = "Test Filter"; const string Message1 = "Error 1"; const string Message2 = "Error 2"; const string Message3 = "Success {0}"; const string ErrorDetails = "Error Details"; const int EntryCount = 123; Mock.Arrange(() => LanguageService.Translate("Msg_LdapFilterTestFailed")).Returns(Message1); Mock.Arrange(() => LanguageService.Translate("Msg_InvalidLdapFilter")).Returns(Message2); Mock.Arrange(() => LanguageService.Translate("Msg_LdapEntriesFound")).Returns(Message3); var popupFactory = Mock.Create<PopupFactory>(Behavior.Loose); var sourceViewModel = Mock.Create<ISourceViewModel>(Behavior.Loose); var target = new LdapDirectoryDataProviderViewModel { PopupFactory = popupFactory }; var model = Mock.Create<LdapDirectoryDataProviderEdit>(Behavior.Loose); Mock.Arrange(model, dp => dp.Filter).Returns(Filter); target.Initialize(model, sourceViewModel); var dataPortalException = new Exception(); Mock.Arrange(() => TestLdapFilterCommand.BeginExecute(Filter, Arg.AnyInt, Arg.IsAny<Action<DataPortalResult<TestLdapFilterCommand>>>())) .DoInstead<string, int, Action<DataPortalResult<TestLdapFilterCommand>>>( (filter, ldapProfileId, callback) => callback(new DataPortalResult<TestLdapFilterCommand>(null, dataPortalException, null))); // Act. target.TestFilterCommand.Execute(null); // Assert. Mock.Assert(() => popupFactory.NotifyFailure(Message1, dataPortalException), Occurs.Once()); // Arrange. Mock.Arrange(() => TestLdapFilterCommand.BeginExecute(Filter, Arg.AnyInt, Arg.IsAny<Action<DataPortalResult<TestLdapFilterCommand>>>())) .DoInstead<string, int, Action<DataPortalResult<TestLdapFilterCommand>>>( (filter, ldapProfileId, callback) => { var error = Mock.Create<ErrorInfo>(Behavior.Loose); Mock.Arrange(error, e => e.Details).Returns(ErrorDetails); var cmd = Mock.Create<TestLdapFilterCommand>(Behavior.Loose); Mock.Arrange(cmd, c => c.Error).Returns(error); callback(new DataPortalResult<TestLdapFilterCommand>(cmd, null, null)); }); // Act. target.TestFilterCommand.Execute(null); // Assert. Mock.Assert(() => popupFactory.NotifyFailure(Message1, ErrorDetails), Occurs.Once()); // Arrange. Mock.Arrange(() => TestLdapFilterCommand.BeginExecute(Filter, Arg.AnyInt, Arg.IsAny<Action<DataPortalResult<TestLdapFilterCommand>>>())) .DoInstead<string, int, Action<DataPortalResult<TestLdapFilterCommand>>>( (filter, ldapProfileId, callback) => { var cmd = Mock.Create<TestLdapFilterCommand>(Behavior.Loose); Mock.Arrange(cmd, c => c.IsFilterValid).Returns(false); Mock.Arrange(cmd, c => c.Error).Returns(() => null); callback(new DataPortalResult<TestLdapFilterCommand>(cmd, null, null)); }); // Act. target.TestFilterCommand.Execute(null); // Assert. Mock.Assert(() => popupFactory.NotifyFailure(Message2, Arg.AnyString, Arg.AnyInt, Arg.AnyBool)); // Arrange. Mock.Arrange(() => TestLdapFilterCommand.BeginExecute(Filter, Arg.AnyInt, Arg.IsAny<Action<DataPortalResult<TestLdapFilterCommand>>>())) .DoInstead<string, int, Action<DataPortalResult<TestLdapFilterCommand>>>( (filter, ldapProfileId, callback) => { var cmd = Mock.Create<TestLdapFilterCommand>(Behavior.Loose); Mock.Arrange(cmd, c => c.IsFilterValid).Returns(true); Mock.Arrange(cmd, c => c.Error).Returns(() => null); Mock.Arrange(cmd, c => c.EntryCount).Returns(EntryCount); callback(new DataPortalResult<TestLdapFilterCommand>(cmd, null, null)); }); // Act. target.TestFilterCommand.Execute(null); // Assert. Mock.Assert(() => popupFactory.NotifySuccess(string.Format(Message3, EntryCount), Arg.AnyString), Occurs.Once()); }
public void GetDataProviderFieldsCommandTest() { // Arrange. const string Message1 = "Test Error 1"; const string Message2 = "Test Success"; const string ErrorDetails = "Error Details"; Mock.Arrange(() => LanguageService.Translate("Msg_LoadLdapAttributesFailed")).Returns(Message1); Mock.Arrange(() => LanguageService.Translate("Msg_FieldsRetrieved")).Returns(Message2); var popupFactory = Mock.Create<PopupFactory>(Behavior.Loose); var sourceViewModel = Mock.Create<ISourceViewModel>(Behavior.Loose); var sourceFieldsViewModel = Mock.Create<ISourceFieldsViewModel>(Behavior.Loose); Mock.Arrange(sourceViewModel, vm => vm.SourceFieldsViewModel).Returns(sourceFieldsViewModel); var model = Mock.Create<LdapDirectoryDataProviderEdit>(Behavior.Loose); var attribute1 = Mock.Create<LdapAttributeEdit>(Behavior.Loose); Mock.Arrange(attribute1, a => a.IsChild).Returns(true); Mock.Arrange(attribute1, a => a.Name).Returns("Attribute1"); var attribute2 = Mock.Create<LdapAttributeEdit>(Behavior.Loose); Mock.Arrange(attribute2, a => a.IsChild).Returns(true); Mock.Arrange(attribute2, a => a.Name).Returns("Attribute2"); var attributeList = new LdapAttributeEditList { attribute1, attribute2 }; Mock.Arrange(() => model.AttributesToLoad).Returns(attributeList); var target = new LdapDirectoryDataProviderViewModel { PopupFactory = popupFactory }; target.Initialize(model, sourceViewModel); // DataPortalResult.Error != null. var dpException = new Exception(); Mock.Arrange( () => LdapDirectoryFieldsRetriever.GetFields( Arg.IsAny<IEnumerable<string>>(), Arg.IsAny<Action<DataPortalResult<LdapDirectoryFieldsRetriever>>>())) .DoInstead<IEnumerable<string>, Action<DataPortalResult<LdapDirectoryFieldsRetriever>>>( (fields, callback) => { if (!fields.SequenceEqual(new[] { "Attribute1", "Attribute2" })) throw new InvalidOperationException("Invalid fields."); callback(new DataPortalResult<LdapDirectoryFieldsRetriever>(null, dpException, null)); }); // Act. target.GetDataProviderFieldsCommand.Execute(null); // Assert. Mock.Assert(() => popupFactory.NotifyFailure(Message1, dpException), Occurs.Once()); // LdapDirectoryFieldsRetriever.Error != null. Mock.Arrange( () => LdapDirectoryFieldsRetriever.GetFields( Arg.IsAny<IEnumerable<string>>(), Arg.IsAny<Action<DataPortalResult<LdapDirectoryFieldsRetriever>>>())) .DoInstead<IEnumerable<string>, Action<DataPortalResult<LdapDirectoryFieldsRetriever>>>( (fields, callback) => { if (!fields.SequenceEqual(new[] { "Attribute1", "Attribute2" })) throw new InvalidOperationException("Invalid fields."); var error = Mock.Create<ErrorInfo>(Behavior.Loose); Mock.Arrange(() => error.Details).Returns(ErrorDetails); var result = Mock.Create<LdapDirectoryFieldsRetriever>(Behavior.Loose); Mock.Arrange(() => result.Error).Returns(error); callback(new DataPortalResult<LdapDirectoryFieldsRetriever>(result, null, null)); }); // Act. target.GetDataProviderFieldsCommand.Execute(null); // Assert. Mock.Assert(() => popupFactory.NotifyFailure(Message1, ErrorDetails), Occurs.Once()); // Retriever executes successfuly. var providerFields = new ProviderFieldInfoList(); Mock.Arrange( () => LdapDirectoryFieldsRetriever.GetFields( Arg.IsAny<IEnumerable<string>>(), Arg.IsAny<Action<DataPortalResult<LdapDirectoryFieldsRetriever>>>())) .DoInstead<IEnumerable<string>, Action<DataPortalResult<LdapDirectoryFieldsRetriever>>>( (fields, callback) => { if (!fields.SequenceEqual(new[] { "Attribute1", "Attribute2" })) throw new InvalidOperationException("Invalid fields."); var result = Mock.Create<LdapDirectoryFieldsRetriever>(Behavior.Loose); Mock.Arrange(() => result.Error).Returns(() => null); Mock.Arrange(() => result.ProviderFields).Returns(providerFields); callback(new DataPortalResult<LdapDirectoryFieldsRetriever>(result, null, null)); }); // Act. target.GetDataProviderFieldsCommand.Execute(null); // Assert. Mock.Assert(() => sourceFieldsViewModel.SetSourceFields(providerFields), Occurs.Once()); Mock.Assert(() => popupFactory.NotifySuccess(Message2, Arg.AnyString), Occurs.Once()); }