// ReSharper disable InconsistentNaming public void ActivityCollectionDesignerViewModel_Constructor_OneBlankRow_OneBlankRowAdded() // ReSharper restore InconsistentNaming { //exe var vm = new TestActivityDesignerCollectionViewModelItemsInitialized(CreateModelItem(1)); //assert VerifyCollection(vm, 2, allRowsBlank: true); }
public void ActivityCollectionDesignerViewModel_InsertAt_AnyIndexWhenTwoRows_DoesNotInsertRow() { var items = CreateItemsList(2); var modelItem = CreateModelItem(items); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); viewModel.InsertAt(1); Verify_CollectionUnchanged(items, viewModel); viewModel.InsertAt(2); Verify_CollectionUnchanged(items, viewModel); }
void Verify_CanInsertAt(List<ActivityDTO> items, int indexNumber, bool expected) { //------------Setup for test-------------------------- var modelItem = CreateModelItem(items); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); //------------Execute Test--------------------------- var result = viewModel.CanInsertAt(indexNumber); //------------Assert Results------------------------- Assert.AreEqual(expected, result); }
// ReSharper disable InconsistentNaming public void ActivityCollectionDesignerViewModel_Constructor_NoBlankRows_BlankRowAdded() // ReSharper restore InconsistentNaming { var items = CreateItemsList(3); items.RemoveAt(2); // remove last blank row var modelItem = CreateModelItem(items); var expectedItemsByIndexNumber = items.ToDictionary(dto => dto.IndexNumber); //exe var vm = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); //assert VerifyCollection(vm, 3, expectedItemsByIndexNumber); }
void Verify_UpdateItem_MakesRowNotBlank(int startItemCount, int updatedIndexNumber, bool isNewBlankRowAdded) { //------------Setup for test-------------------------- var items = CreateItemsList(startItemCount); var modelItem = CreateModelItem(items); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); for(var i = 0; i < startItemCount; i++) { Assert.AreEqual(i == startItemCount - 1, items[i].CanRemove()); } var idx = updatedIndexNumber - 1; //------------Execute Test--------------------------- items[idx].FieldValue = idx == startItemCount - 1 ? "test value" : string.Empty; // if field is blank, put text otherwise clear it //------------Assert Results------------------------- Assert.IsFalse(items[idx].CanRemove()); var expectedItemCount = isNewBlankRowAdded ? startItemCount + 1 : startItemCount; var expectedNonBlankItemCount = expectedItemCount - 1; Assert.AreEqual(expectedItemCount, viewModel.ItemCount); Assert.AreEqual(string.Format("Activity ({0})", expectedNonBlankItemCount), viewModel.ModelItem.GetProperty("DisplayName")); // ReSharper disable PossibleNullReferenceException var mic = viewModel.ModelItem.Properties[viewModel.CollectionName].Collection; for(int i = 0, j = 0; j < expectedItemCount; j++) { var dto = (ActivityDTO)mic[j].GetCurrentValue(); if(j == expectedItemCount - 1 && isNewBlankRowAdded) { Assert.AreEqual("", dto.FieldName); Assert.AreEqual("", dto.FieldValue); } else { Assert.AreSame(items[i++], dto); } } // ReSharper restore PossibleNullReferenceException }
public void ActivityCollectionDesignerViewModel_UpdateItem_RowCountIsTwoBlanksAndMakesSecondRowNonBlank_NoRowsAddedOrRemoved() { //------------Setup for test-------------------------- var items = new List<ActivityDTO> { new ActivityDTO("", "", 1), new ActivityDTO("", "", 2) }; Assert.IsTrue(items[0].CanRemove()); Assert.IsTrue(items[1].CanRemove()); var modelItem = CreateModelItem(items); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); const int Idx = 1; //------------Execute Test--------------------------- items[Idx].FieldName = "test"; // CanRemove() checks this //------------Assert Results------------------------- Verify_CollectionUnchanged(items, viewModel); }
public void ActivityCollectionDesignerViewModel_Validate_NoErrorsFound_IsValidIsTrue() { var collectionsViewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(CreateModelItem(4)); collectionsViewModel.Validate(); Assert.IsTrue(collectionsViewModel.IsValid); }
public void ActivityCollectionDesignerViewModel_Constructor_ValidModelItem_InstanceOfQuickVariableInputViewModelCreated() { var collectionsViewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(CreateModelItem(0)); Assert.IsNotNull(collectionsViewModel.QuickVariableInputViewModel); }
void Verify_UpdateItem_MakesRowBlankAndIndexNumberInBounds_RowNotRemoved(int startItemCount, int indexNumber) { //------------Setup for test-------------------------- var items = CreateItemsList(startItemCount); var modelItem = CreateModelItem(items); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); for(var i = 0; i < startItemCount; i++) { Assert.AreEqual(i == startItemCount - 1, items[i].CanRemove()); } var idx = indexNumber - 1; //------------Execute Test--------------------------- items[idx].FieldName = string.Empty; // CanRemove() checks this items[idx].FieldValue = string.Empty; // CanRemove() checks this //------------Assert Results------------------------- Assert.IsTrue(items[idx].CanRemove()); var expectedItemCount = startItemCount; var expectedNonBlankItemCount = expectedItemCount - 1; Assert.AreEqual(expectedItemCount, viewModel.ItemCount); Assert.AreEqual(string.Format("Activity ({0})", expectedNonBlankItemCount), viewModel.ModelItem.GetProperty("DisplayName")); // ReSharper disable PossibleNullReferenceException var mic = viewModel.ModelItem.Properties[viewModel.CollectionName].Collection; for(int i = 0, j = 0; j < expectedItemCount; j++) { var dto = (ActivityDTO)mic[j].GetCurrentValue(); Assert.AreSame(items[i++], dto); Assert.AreEqual(j + 1, dto.IndexNumber); } // ReSharper restore PossibleNullReferenceException }
public void ActivityCollectionDesignerViewModel_ChangeDtoProperty_CausesCustomActionsToFire() { //------------Setup for test-------------------------- const int ItemCount = 3; var modelItem = CreateModelItem(ItemCount); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); const int ExpectedItemCount = 5; var source = new List<string>(); for(var i = 0; i < ExpectedItemCount; i++) { source.Add("NewField" + i); } viewModel.TestAddToCollection(source, true); // ReSharper disable PossibleNullReferenceException var mic = viewModel.ModelItem.Properties[viewModel.CollectionName].Collection; var dto = (ActivityDTO)mic[0].GetCurrentValue(); // ReSharper restore PossibleNullReferenceException //------------Execute Test--------------------------- dto.FieldName = "Test"; //------------Assert Results------------------------- Assert.IsTrue(viewModel.CustomActionCalled); }
public void ActivityCollectionDesignerViewModel_AddToCollection_OverwriteFalseAndTwoBlankRows_ItemsAdded() { //------------Setup for test-------------------------- var items = CreateItemsList(2); // all blank rows var modelItem = CreateModelItem(items); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); var source = new List<string>(); for(var i = 0; i < 2; i++) { source.Add("NewField" + (i + 1)); } const int ExpectedItemCount = 3; //------------Execute Test--------------------------- viewModel.TestAddToCollection(source, false); //------------Assert Results------------------------- // ReSharper disable PossibleNullReferenceException var mic = viewModel.ModelItem.Properties[viewModel.CollectionName].Collection; // Extra blank row is also added Assert.AreEqual(ExpectedItemCount, viewModel.ItemCount); VerifyItem(mic[0], 1, "NewField1", ""); VerifyItem(mic[1], 2, "NewField2", ""); // check that the first blank row was not removed - just repositioned Assert.AreSame(items[0], mic[2].GetCurrentValue()); VerifyItem(mic[2], 3, "", ""); // ReSharper restore PossibleNullReferenceException Assert.AreEqual(string.Format("Activity ({0})", ExpectedItemCount - 1), viewModel.ModelItem.GetProperty("DisplayName")); }
public void ActivityCollectionDesignerViewModel_AddToCollection_OverwriteTrue_CollectionClearedAndNewItemsAdded() { //------------Setup for test-------------------------- const int ItemCount = 3; var modelItem = CreateModelItem(ItemCount); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); const int ExpectedItemCount = 5; var source = new List<string>(); for(var i = 0; i < ExpectedItemCount; i++) { source.Add("NewField" + i); } //------------Execute Test--------------------------- viewModel.TestAddToCollection(source, true); //------------Assert Results------------------------- // ReSharper disable PossibleNullReferenceException var mic = viewModel.ModelItem.Properties[viewModel.CollectionName].Collection; // ReSharper restore PossibleNullReferenceException // Extra blank row is also added Assert.AreEqual(ExpectedItemCount + 1, viewModel.ItemCount); Assert.AreEqual(string.Format("Activity ({0})", ExpectedItemCount), viewModel.ModelItem.GetProperty("DisplayName")); System.Diagnostics.Debug.Assert(mic != null, "mic != null"); for(var i = 0; i < mic.Count; i++) { var dto = (ActivityDTO)mic[i].GetCurrentValue(); if(i == ExpectedItemCount) { // last row is blank Assert.IsTrue(dto.CanRemove()); } else { Assert.IsFalse(dto.CanRemove()); Assert.AreEqual("NewField" + i, dto.FieldName); } } }
public void ActivityCollectionDesignerViewModel_UpdateDisplayName_OldDisplayNameHasOpeningAndClosingBrackets_BracketsRemovedAndReadded() { //------------Setup for test-------------------------- const int ItemCount = 3; var modelItem = CreateModelItem(ItemCount); modelItem.SetProperty("DisplayName", "Activity (12)"); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); //------------Execute Test--------------------------- viewModel.UpdateDisplayName(); //------------Assert Results------------------------- var actual = viewModel.ModelItem.GetProperty("DisplayName"); Assert.AreEqual(string.Format("Activity ({0})", ItemCount - 1), actual); }
void Verify_CollectionUnchanged(List<ActivityDTO> items, TestActivityDesignerCollectionViewModelItemsInitialized viewModel) { var expectedItemCount = items.Count; var expectedNonBlankItemCount = expectedItemCount - 1; Assert.AreEqual(expectedItemCount, viewModel.ItemCount); Assert.AreEqual(string.Format("Activity ({0})", expectedNonBlankItemCount), viewModel.ModelItem.GetProperty("DisplayName")); // ReSharper disable PossibleNullReferenceException var mic = viewModel.ModelItem.Properties[viewModel.CollectionName].Collection; for(int i = 0, j = 0; i < expectedItemCount; i++, j++) { var expectedIndexNumber = i + 1; var dto = (ActivityDTO)mic[i].GetCurrentValue(); Assert.AreEqual(expectedIndexNumber, dto.IndexNumber); Assert.AreSame(items[j], dto); } // ReSharper restore PossibleNullReferenceException }
void Verify_InsertAt_LastIndex_DoesNotInsertRow(int itemCount) { var items = CreateItemsList(itemCount); var modelItem = CreateModelItem(items); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); viewModel.InsertAt(itemCount); Verify_CollectionUnchanged(items, viewModel); }
void Verify_UpdateItem_MakesRowBlankAndIndexNumberOutOfBounds_RowNotRemoved(int startItemCount, int indexNumber) { //------------Setup for test-------------------------- var items = CreateItemsList(startItemCount); var modelItem = CreateModelItem(items); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); Assert.IsFalse(items[0].CanRemove()); Assert.IsFalse(items[1].CanRemove()); Assert.IsTrue(items[2].CanRemove()); const int Idx = 1; // random row //------------Execute Test--------------------------- items[Idx].IndexNumber = indexNumber; // must be done first, so that the index number is correct before clearing the other fields items[Idx].FieldName = string.Empty; // CanRemove() checks this items[Idx].FieldValue = string.Empty; // CanRemove() checks this //------------Assert Results------------------------- Assert.IsTrue(items[Idx].CanRemove()); var expectedItemCount = startItemCount; var expectedNonBlankItemCount = expectedItemCount - 1; Assert.AreEqual(expectedItemCount, viewModel.ItemCount); Assert.AreEqual(string.Format("Activity ({0})", expectedNonBlankItemCount), viewModel.ModelItem.GetProperty("DisplayName")); // ReSharper disable PossibleNullReferenceException var mic = viewModel.ModelItem.Properties[viewModel.CollectionName].Collection; Assert.AreSame(items[0], mic[0].GetCurrentValue()); Assert.AreSame(items[1], mic[1].GetCurrentValue()); Assert.AreSame(items[2], mic[2].GetCurrentValue()); // ReSharper restore PossibleNullReferenceException }
void Verify_InsertsAt_InsertsRow(int startItemCount, int indexNumber) { //------------Setup for test-------------------------- var items = CreateItemsList(startItemCount); var modelItem = CreateModelItem(items); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); //------------Execute Test--------------------------- viewModel.InsertAt(indexNumber); //------------Assert Results------------------------- var expectedItemCount = startItemCount + 1; var expectedNonBlankItemCount = expectedItemCount - 1; Assert.AreEqual(expectedItemCount, viewModel.ItemCount); Assert.AreEqual(string.Format("Activity ({0})", expectedNonBlankItemCount), viewModel.ModelItem.GetProperty("DisplayName")); // ReSharper disable PossibleNullReferenceException var mic = viewModel.ModelItem.Properties[viewModel.CollectionName].Collection; for(int i = 0, j = 0; i < expectedItemCount; i++) { //var expectedIndexNumber = i + 1; var dto = (ActivityDTO)mic[i].GetCurrentValue(); //Assert.AreEqual(expectedIndexNumber, dto.IndexNumber); if(i != indexNumber - 1) { Assert.AreSame(items[j++], dto); } else { Assert.IsTrue(dto.CanRemove()); } } // ReSharper restore PossibleNullReferenceException }
public void ActivityCollectionDesignerViewModel_UpdateItem_RowCountIsTwoAndMakesFirstRowBlank_RowNotRemoved() { //------------Setup for test-------------------------- var items = new List<ActivityDTO> { new ActivityDTO("field1", "value1", 1), new ActivityDTO("", "", 2) }; Assert.IsFalse(items[0].CanRemove()); Assert.IsTrue(items[1].CanRemove()); var modelItem = CreateModelItem(items); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); const int Idx = 0; //------------Execute Test--------------------------- items[Idx].FieldName = string.Empty; // CanRemove() checks this items[Idx].FieldValue = string.Empty; // CanRemove() checks this //------------Assert Results------------------------- Assert.IsTrue(items[Idx].CanRemove()); const int ExpectedItemCount = 2; const int ExpectedNonBlankItemCount = ExpectedItemCount - 1; Assert.AreEqual(2, viewModel.ItemCount); Assert.AreEqual(string.Format("Activity ({0})", ExpectedNonBlankItemCount), viewModel.ModelItem.GetProperty("DisplayName")); // ReSharper disable PossibleNullReferenceException var mic = viewModel.ModelItem.Properties[viewModel.CollectionName].Collection; Assert.AreSame(items[0], mic[0].GetCurrentValue()); Assert.AreSame(items[1], mic[1].GetCurrentValue()); // ReSharper restore PossibleNullReferenceException }
public void ActivityCollectionDesignerViewModel_OnDTOPropertyChanged_OnlyListensForCanRemoveProperty() { //------------Setup for test-------------------------- var items = CreateItemsList(3); var modelItem = CreateModelItem(items); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); //------------Execute Test--------------------------- items[0].IsFieldNameFocused = true; //------------Assert Results------------------------- Verify_CollectionUnchanged(items, viewModel); }
void Verify_OnSelectionChanged_OldRowIsNotBlank_RowNotRemoved(int startItemCount, int indexNumber) { //------------Setup for test-------------------------- var items = CreateItemsList(startItemCount); var modelItem = CreateModelItem(items); var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem); for(var i = 0; i < startItemCount; i++) { Assert.AreEqual(i == startItemCount - 1, items[i].CanRemove()); } var idx = indexNumber - 1; //------------Execute Test--------------------------- items[idx].FieldName = string.Empty; // CanRemove() checks this viewModel.OnSelectionChanged(viewModel.ModelItemCollection[idx], viewModel.ModelItemCollection[idx + 1]); //------------Assert Results------------------------- Assert.IsFalse(items[idx].CanRemove()); Verify_CollectionUnchanged(items, viewModel); }