Browse Source

Now able to perform actions in bulk

Piotr Czajkowski 1 year ago
parent
commit
baa8a97a87
2 changed files with 52 additions and 3 deletions
  1. 13 1
      analyzeJSON/AnalyzeJSON.cs
  2. 39 2
      analyzeJSONTests/AnalyzeJSONUnitTests.cs

+ 13 - 1
analyzeJSON/AnalyzeJSON.cs

@@ -56,10 +56,22 @@ namespace analyzeJSON
                 return new(false, "JSON is empty!");
 
             if (action == null)
-                return new(false, "Action can't be null!");
+                return new(false, $"{nameof(action)} can't be null!");
 
             TraverseWithActions(json.Children(), new List<Action<JToken>>{action});
             return new(true, string.Empty);
+        }
+
+			public Status Traverse(List<Action<JToken>> actions)
+        {
+            if (!json.HasValues)
+                return new(false, "JSON is empty!");
+
+            if (actions == null || actions.Count == 0)
+                return new(false, $"{nameof(actions)} can't be null!");
+
+            TraverseWithActions(json.Children(), actions);
+            return new(true, string.Empty);
         }
     }
 }

+ 39 - 2
analyzeJSONTests/AnalyzeJSONUnitTests.cs

@@ -1,4 +1,4 @@
-using System;
+using System;
 using System.Collections.Generic;
 using analyzeJSON;
 using Newtonsoft.Json.Linq;
@@ -28,7 +28,7 @@ namespace analyzeJSONTests
             };
             var test = new AnalyzeJSON(jObject);
 
-            var result = test.Traverse(null);
+            var result = test.Traverse(action: null);
             Assert.False(result.Success);
             Assert.NotEmpty(result.Message);
         }
@@ -74,6 +74,43 @@ namespace analyzeJSONTests
 
             foreach (var testCase in testCases)
                 Assert.Equal(testCase.ExpectedOutput, AnalyzeJSON.GetNameFromPath(testCase.Input));
+        }
+
+			[Fact]
+        public void Traverse_EmptyJObject_WithActions()
+        {
+            var test = new AnalyzeJSON(new JObject());
+            var result = test.Traverse(new List<Action<JToken>>{ (token) => Console.WriteLine(token) });
+            Assert.False(result.Success);
+            Assert.NotEmpty(result.Message);
+        }
+
+        [Fact]
+        public void Traverse_NullActions()
+        {
+            var jObject = new JObject
+            {
+                { "test", new JObject() }
+            };
+            var test = new AnalyzeJSON(jObject);
+
+            var result = test.Traverse(actions: null);
+            Assert.False(result.Success);
+            Assert.NotEmpty(result.Message);
+        }
+
+				[Fact]
+        public void Traverse_EmptyActions()
+        {
+            var jObject = new JObject
+            {
+                { "test", new JObject() }
+            };
+            var test = new AnalyzeJSON(jObject);
+
+            var result = test.Traverse(new List<Action<JToken>>());
+            Assert.False(result.Success);
+            Assert.NotEmpty(result.Message);
         }
     }
 }