diff --git a/.gitignore b/.gitignore index 4ce6fdde..e7363708 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,7 @@ bld/ # Visual Studio 2015/2017 cache/options directory .vs/ +.vscode/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ diff --git a/RarelySimple.AvatarScriptLink.Tests/Helpers/OptionObject/DisableAllFieldObjectsTests.cs b/RarelySimple.AvatarScriptLink.Tests/Helpers/OptionObject/DisableAllFieldObjectsTests.cs index ac1e772f..e040194e 100644 --- a/RarelySimple.AvatarScriptLink.Tests/Helpers/OptionObject/DisableAllFieldObjectsTests.cs +++ b/RarelySimple.AvatarScriptLink.Tests/Helpers/OptionObject/DisableAllFieldObjectsTests.cs @@ -252,6 +252,80 @@ public void DisableAllFieldObjects_OptionObject2_FormCount_AreEqual() Assert.AreEqual(optionObject2.Forms.Count, returnOptionObject.Forms.Count); } + [TestMethod] + [TestCategory("ScriptLinkHelpers")] + public void DisableAllFieldObjects_OptionObject2015_MissingProperties_IsDisabled() + { + FieldObject fieldObject1 = new FieldObject() { FieldNumber = "1", FieldValue = "1" }; + FieldObject fieldObject2 = new FieldObject() { FieldNumber = "2", FieldValue = "2" }; + FieldObject fieldObject3 = new FieldObject() { FieldNumber = "3", FieldValue = "3" }; + FieldObject fieldObject4 = new FieldObject() { FieldNumber = "4", FieldValue = "4" }; + FieldObject fieldObject5 = new FieldObject() { FieldNumber = "5", FieldValue = "5" }; + List fieldObjects = new List + { + fieldObject1, + fieldObject2, + fieldObject3, + fieldObject4, + fieldObject5 + }; + RowObject rowObject = new RowObject("1||1", fieldObjects); + FormObject formObject = new FormObject("1", rowObject); + List formObjects = new List + { + formObject + }; + OptionObject2015 optionObject2015 = new OptionObject2015() + { + Forms = formObjects + }; + + OptionObject2015 returnOptionObject = (OptionObject2015)OptionObjectHelpers.DisableAllFieldObjects(optionObject2015); + + Assert.IsFalse(returnOptionObject.IsFieldEnabled("1")); + Assert.IsFalse(returnOptionObject.IsFieldEnabled("2")); + Assert.IsFalse(returnOptionObject.IsFieldEnabled("3")); + Assert.IsFalse(returnOptionObject.IsFieldEnabled("4")); + Assert.IsFalse(returnOptionObject.IsFieldEnabled("5")); + } + + [TestMethod] + [TestCategory("ScriptLinkHelpers")] + public void DisableAllFieldObjects_OptionObject2015_IsModified() + { + FieldObject fieldObject1 = new FieldObject() { FieldNumber = "1", FieldValue = "1" }; + FieldObject fieldObject2 = new FieldObject() { FieldNumber = "2", FieldValue = "2" }; + FieldObject fieldObject3 = new FieldObject() { FieldNumber = "3", FieldValue = "3" }; + FieldObject fieldObject4 = new FieldObject() { FieldNumber = "4", FieldValue = "4" }; + FieldObject fieldObject5 = new FieldObject() { FieldNumber = "5", FieldValue = "5" }; + List fieldObjects = new List + { + fieldObject1, + fieldObject2, + fieldObject3, + fieldObject4, + fieldObject5 + }; + RowObject rowObject = new RowObject("1||1", fieldObjects); + FormObject formObject = new FormObject("1", rowObject); + List formObjects = new List + { + formObject + }; + OptionObject2015 optionObject2015 = new OptionObject2015() + { + Forms = formObjects + }; + + OptionObject2015 returnOptionObject = (OptionObject2015)OptionObjectHelpers.DisableAllFieldObjects(optionObject2015); + + Assert.IsTrue(returnOptionObject.IsFieldModified("1")); + Assert.IsTrue(returnOptionObject.IsFieldModified("2")); + Assert.IsTrue(returnOptionObject.IsFieldModified("3")); + Assert.IsTrue(returnOptionObject.IsFieldModified("4")); + Assert.IsTrue(returnOptionObject.IsFieldModified("5")); + } + [TestMethod] [TestCategory("ScriptLinkHelpers")] public void DisableAllFieldObjects_OptionObject2015_ExcludesFields() diff --git a/RarelySimple.AvatarScriptLink.Tests/Helpers/OptionObject/RemoveUneditedRowsTests.cs b/RarelySimple.AvatarScriptLink.Tests/Helpers/OptionObject/RemoveUneditedRowsTests.cs index 6217e1b2..d2daa168 100644 --- a/RarelySimple.AvatarScriptLink.Tests/Helpers/OptionObject/RemoveUneditedRowsTests.cs +++ b/RarelySimple.AvatarScriptLink.Tests/Helpers/OptionObject/RemoveUneditedRowsTests.cs @@ -303,6 +303,31 @@ public void RemoveUneditedRows_OptionObject2015_UnmodifiedFieldIsAbsent() Assert.IsFalse(optionObject.IsFieldPresent("124")); } + [TestMethod] + public void RemoveUneditedRows_OptionObject2015_DisableAllFields_NoneRemoved() + { + // Arrange + FieldObject fieldObject01 = new FieldObject("123", ""); + FieldObject fieldObject02 = new FieldObject("124", ""); + FieldObject fieldObject03 = new FieldObject("125", ""); + RowObject rowObject01 = new RowObject("1||1", new List() { fieldObject01, fieldObject02, fieldObject03 }); + FormObject formObject = new FormObject("1", rowObject01); + OptionObject2015 optionObject = new OptionObject2015() + { + Forms = new List() + { + formObject + } + }; + + // Act + optionObject.DisableAllFieldObjects(); + optionObject = (OptionObject2015)OptionObjectHelpers.RemoveUneditedRows(optionObject); + + // Assert + Assert.IsTrue(optionObject.IsFieldPresent("124")); + } + // Add tests for multiple forms and multiple iteration tables (incl. Adding rows to multiple iteration tables) } } diff --git a/RarelySimple.AvatarScriptLink/Objects/Advanced/Abstracts/FieldObjectBase.cs b/RarelySimple.AvatarScriptLink/Objects/Advanced/Abstracts/FieldObjectBase.cs index 6f4c10d2..4d23f52c 100644 --- a/RarelySimple.AvatarScriptLink/Objects/Advanced/Abstracts/FieldObjectBase.cs +++ b/RarelySimple.AvatarScriptLink/Objects/Advanced/Abstracts/FieldObjectBase.cs @@ -20,6 +20,7 @@ protected FieldObjectBase() _fieldValue = ""; _locked = ""; _required = ""; + _modified = false; } /// /// Creates a with the specified . @@ -34,6 +35,7 @@ protected FieldObjectBase(string fieldNumber) FieldValue = ""; Lock = "0"; Required = "0"; + _modified = false; } /// /// Creates a with the specified and . @@ -49,6 +51,7 @@ protected FieldObjectBase(string fieldNumber, string fieldValue) FieldValue = fieldValue; Lock = "0"; Required = "0"; + _modified = false; } /// /// Creates a with the specified and . @@ -67,6 +70,7 @@ protected FieldObjectBase(string fieldNumber, string fieldValue, bool enabled, b FieldValue = fieldValue; Lock = locked ? "1" : "0"; Required = required ? "1" : "0"; + _modified = false; } #endregion @@ -103,8 +107,7 @@ public string Enabled { if (OriginalEnabled == null) OriginalEnabled = value; - else - _modified = true; + _modified = true; _enabled = value; } } @@ -160,8 +163,7 @@ public string Lock { if (OriginalLocked == null) OriginalLocked = value; - else - _modified = true; + _modified = true; _locked = value; } } @@ -179,8 +181,7 @@ public string Required { if (OriginalRequired == null) OriginalRequired = value; - else - _modified = true; + _modified = true; _required = value; } }