From ab7ab364159e60cccf8da527fb57d5078c4a53ed Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 19 Dec 2018 18:16:29 +0000 Subject: [PATCH] --- Tags/TagOps.cs | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 Tags/TagOps.cs diff --git a/Tags/TagOps.cs b/Tags/TagOps.cs new file mode 100644 index 0000000..30b6b13 --- /dev/null +++ b/Tags/TagOps.cs @@ -0,0 +1,98 @@ +using Xunit; +using Newtonsoft.Json.Linq; +using FluentAssertions; +using System.Collections.Generic; + + +namespace raven_integration +{ + + public class TagOps + { + + /// + /// + /// + [Fact] + public async void TagCRUDProcessingWorks() + { + + var TestName = "TagCRUDProcessingWorks"; + var WidgetRunNameStart = Util.Uniquify(TestName); + var TagNameStart = Util.Uniquify("crud-tag-test-") + "-";//ensure this run gets it's own unique tags + + List InitialTagsList = new List(); + InitialTagsList.Add(TagNameStart + "red"); + InitialTagsList.Add(TagNameStart + "orange"); + InitialTagsList.Add(TagNameStart + "yellow"); + InitialTagsList.Add(TagNameStart + "green"); + InitialTagsList.Add(TagNameStart + "blue"); + InitialTagsList.Add(TagNameStart + "indigo"); + InitialTagsList.Add(TagNameStart + "violet"); + + List UpdateTagsList = new List(); + //Newly added tags + UpdateTagsList.Add(TagNameStart + "crimson"); + UpdateTagsList.Add(TagNameStart + "amber"); + UpdateTagsList.Add(TagNameStart + "saffron"); + UpdateTagsList.Add(TagNameStart + "emerald"); + UpdateTagsList.Add(TagNameStart + "azure"); + UpdateTagsList.Add(TagNameStart + "cobalt"); + UpdateTagsList.Add(TagNameStart + "magenta"); + + //maintains these tags + UpdateTagsList.Add(TagNameStart + "red"); + UpdateTagsList.Add(TagNameStart + "blue"); + + //Removes these tags by omission + //orange, yellow, green, indigo, violet + + + dynamic w = new JObject(); + w.name = Util.Uniquify(WidgetRunNameStart); + //Tags + dynamic InitialTags = new JArray(); + foreach (string s in InitialTagsList) + { + InitialTags.Add(s); + } + w.tags = InitialTags; + + ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); + Util.ValidateDataReturnResponseOk(a); + long WidgetId = a.ObjectResponse["data"]["id"].Value(); + + //HERE TODO: validate the repository LIST ROUTE of tags contains the ones above and that their refcount is 1 + + + //UPDATE Tags + dynamic UpdateTags = new JArray(); + + //Adds these tags + foreach (string s in UpdateTagsList) + { + UpdateTags.Add(s); + } + //update Widget and put to server + w.concurrencyToken = a.ObjectResponse["data"]["concurrencyToken"].Value(); + w.tags = UpdateTags; + ApiResponse PUTTestResponse = await Util.PutAsync("Widget/" + WidgetId.ToString(), await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); + Util.ValidateHTTPStatusCode(PUTTestResponse, 200); + + + //Verify the tags collection remaining + //HERE TODO: validate the repository LIST ROUTE of tags contains the ones above and that their refcount is 1 + + + + + } + + +//TODO: Deliberate concurrency violation tests here + + + //================================================== + + }//eoc +}//eons