This commit is contained in:
@@ -20,10 +20,10 @@ namespace AyaNova.Util
|
||||
/////////// CHANGE THIS ON NEW SCHEMA UPDATE ////////////////////
|
||||
|
||||
//!!!!WARNING: BE SURE TO UPDATE THE DbUtil::PrepareDatabaseForSeeding WHEN NEW TABLES ADDED!!!!
|
||||
private const int DESIRED_SCHEMA_LEVEL = 9;
|
||||
private const int DESIRED_SCHEMA_LEVEL = 8;
|
||||
|
||||
internal const long EXPECTED_COLUMN_COUNT = 108;
|
||||
internal const long EXPECTED_INDEX_COUNT = 25;
|
||||
internal const long EXPECTED_COLUMN_COUNT = 93;
|
||||
internal const long EXPECTED_INDEX_COUNT = 20;
|
||||
|
||||
//!!!!WARNING: BE SURE TO UPDATE THE DbUtil::PrepareDatabaseForSeeding WHEN NEW TABLES ADDED!!!!
|
||||
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
using System;
|
||||
using Xunit;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using FluentAssertions;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
namespace raven_integration
|
||||
{
|
||||
|
||||
public class TagCrud
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Test all CRUD routes for a widget
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public async void CRUD()
|
||||
{
|
||||
/*
|
||||
{
|
||||
"name": "TestTag"
|
||||
}
|
||||
*/
|
||||
|
||||
//CREATE
|
||||
dynamic w1 = new JObject();
|
||||
w1.name = Util.Uniquify("TeStTaG");
|
||||
|
||||
|
||||
ApiResponse a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), w1.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
long tagId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
string tagName = a.ObjectResponse["data"]["name"].Value<string>();
|
||||
tagName.Should().StartWith("testtag");
|
||||
|
||||
|
||||
//RETRIEVE
|
||||
/*
|
||||
{
|
||||
"data": {
|
||||
"id": 24,
|
||||
"created": "2018-03-28T21:07:41.9703503Z",
|
||||
"concurrencyToken": 9502,
|
||||
"ownerId": 1,
|
||||
"name": "یونیکُد چیست؟"
|
||||
}
|
||||
}
|
||||
*/
|
||||
//Get one
|
||||
a = await Util.GetAsync("Tag/" + tagId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
a.ObjectResponse["data"]["name"].Value<string>().Should().StartWith("testtag");
|
||||
|
||||
//UPDATE
|
||||
|
||||
//PUT
|
||||
w1.Id = tagId;
|
||||
w1.name = Util.Uniquify("PutTestTag");
|
||||
w1.created = DateTime.UtcNow.ToString("s", System.Globalization.CultureInfo.InvariantCulture);
|
||||
w1.concurrencyToken = a.ObjectResponse["data"]["concurrencyToken"].Value<uint>();
|
||||
w1.OwnerId = 1L;
|
||||
|
||||
|
||||
ApiResponse PUTTestResponse = await Util.PutAsync("Tag/" + tagId.ToString(), await Util.GetTokenAsync("BizAdminFull"), w1.ToString());
|
||||
Util.ValidateHTTPStatusCode(PUTTestResponse, 200);
|
||||
|
||||
//check PUT worked
|
||||
ApiResponse checkPUTWorked = await Util.GetAsync("Tag/" + tagId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateNoErrorInResponse(checkPUTWorked);
|
||||
checkPUTWorked.ObjectResponse["data"]["name"].Value<string>().Should().Be(w1.name.ToString().ToLowerInvariant().Replace(" ", "-"));
|
||||
uint concurrencyToken = PUTTestResponse.ObjectResponse["data"]["concurrencyToken"].Value<uint>();
|
||||
|
||||
//PATCH
|
||||
var newName = Util.Uniquify("PatchUpdate");
|
||||
string patchJson = "[{\"value\": \"" + newName + "\",\"path\": \"/name\",\"op\": \"replace\"}]";
|
||||
ApiResponse PATCHTestResponse = await Util.PatchAsync("Tag/" + tagId.ToString() + "/" + concurrencyToken.ToString(), await Util.GetTokenAsync("BizAdminFull"), patchJson);
|
||||
Util.ValidateHTTPStatusCode(PATCHTestResponse, 200);
|
||||
|
||||
//check PATCH worked
|
||||
ApiResponse checkPATCHWorked = await Util.GetAsync("Tag/" + tagId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateNoErrorInResponse(checkPATCHWorked);
|
||||
checkPATCHWorked.ObjectResponse["data"]["name"].Value<string>().Should().Be(newName.ToLowerInvariant().Replace(" ", "-"));
|
||||
|
||||
// //DELETE
|
||||
ApiResponse DELETETestResponse = await Util.DeleteAsync("Tag/" + tagId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(DELETETestResponse, 204);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//==================================================
|
||||
|
||||
}//eoc
|
||||
}//eons
|
||||
@@ -1,138 +0,0 @@
|
||||
using System;
|
||||
using Xunit;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using FluentAssertions;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
namespace raven_integration
|
||||
{
|
||||
|
||||
public class TagGroupOps
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Test TagGroup operations
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public async void GroupOpsShouldWork()
|
||||
{
|
||||
|
||||
//CREATE TAG1
|
||||
dynamic D = new JObject();
|
||||
D.name = Util.Uniquify("test-tag1-4-tag-group");
|
||||
ApiResponse R = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), D.ToString());
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
long TestTag1Id = R.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
|
||||
//CREATE TAG2
|
||||
D.name = Util.Uniquify("test-tag2-4-tag-group");
|
||||
R = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), D.ToString());
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
long TestTag2Id = R.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
|
||||
//CREATE TAG-GROUP
|
||||
D = new JObject();
|
||||
D.name = Util.Uniquify("test-tag-group-for-ops");
|
||||
|
||||
R = await Util.PostAsync("TagGroup", await Util.GetTokenAsync("BizAdminFull"), D.ToString());
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
long TestTagGroupId = R.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
|
||||
//ADD TEST TAGS TO GROUP
|
||||
D = new JObject();
|
||||
D.tagId = TestTag1Id;
|
||||
D.tagGroupId = TestTagGroupId;
|
||||
R = await Util.PostAsync("TagGroupMap", await Util.GetTokenAsync("BizAdminFull"), D.ToString());
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
|
||||
D.tagId = TestTag2Id;
|
||||
D.tagGroupId = TestTagGroupId;
|
||||
R = await Util.PostAsync("TagGroupMap", await Util.GetTokenAsync("BizAdminFull"), D.ToString());
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
|
||||
|
||||
//GET PICKLIST OF TAGS FOR GROUP
|
||||
R = await Util.GetAsync("TagGroup/TagsInGroupPickList/" + TestTagGroupId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
|
||||
//VERIFY CANT DELETE TAG IN GROUP
|
||||
R = await Util.DeleteAsync("Tag/" + TestTag2Id.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateErrorCodeResponse(R, 2200, 400);
|
||||
|
||||
|
||||
//TAG ITEM WITH GROUP OF TAGS
|
||||
//CREATE WIDGET
|
||||
D = new JObject();
|
||||
D.name = Util.Uniquify("WIDGET_TAG_GROUP_TAG_TEST");
|
||||
D.created = DateTime.Now.ToString();
|
||||
D.dollarAmount = 1.11m;
|
||||
D.active = true;
|
||||
D.roles = 0;
|
||||
|
||||
R = await Util.PostAsync("Widget", await Util.GetTokenAsync("BizAdminFull"), D.ToString());
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
long WidgetId = R.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
|
||||
|
||||
//CREATE TAGMAP (tag the widget)
|
||||
/*
|
||||
{
|
||||
"tagGroupId": 0,
|
||||
"tagToObjectId": 0,
|
||||
"tagToObjectType": 0
|
||||
}
|
||||
*/
|
||||
D = new JObject();
|
||||
D.tagGroupId = TestTagGroupId;
|
||||
D.tagToObjectId = WidgetId;
|
||||
D.tagToObjectType = 2;//widget
|
||||
|
||||
|
||||
R = await Util.PostAsync("TagGroup/TagObject", await Util.GetTokenAsync("BizAdminFull"), D.ToString());
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
((JArray)R.ObjectResponse["data"]).Count.Should().Be(2);
|
||||
|
||||
|
||||
//VALIDATE HAS TAGS FROM GROUP
|
||||
D = new JObject();
|
||||
D.objectId = WidgetId;
|
||||
D.objectType = 2;//widget
|
||||
R = await Util.GetAsync("TagMap/TagsOnObject/", await Util.GetTokenAsync("BizAdminFull"), D.ToString());
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
Util.ValidateHTTPStatusCode(R, 200);
|
||||
//there should be 2 of them
|
||||
((JArray)R.ObjectResponse["data"]).Count.Should().Be(2);
|
||||
|
||||
|
||||
//DELETE TAG-GROUP
|
||||
R = await Util.DeleteAsync("TagGroup/" + TestTagGroupId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(R, 204);
|
||||
|
||||
//DELETE WIDGET (which will delete tagmaps as well)
|
||||
R = await Util.DeleteAsync("Widget/" + WidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(R, 204);
|
||||
|
||||
//VERIFY CAN NOW DELETE TAG IN GROUP
|
||||
R = await Util.DeleteAsync("Tag/" + TestTag2Id.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(R, 204);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//==================================================
|
||||
|
||||
}//eoc
|
||||
}//eons
|
||||
@@ -1,82 +0,0 @@
|
||||
using System;
|
||||
using Xunit;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using FluentAssertions;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
namespace raven_integration
|
||||
{
|
||||
|
||||
public class TagLists
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public async void PickListSearchRouteShouldWorkAsExpected()
|
||||
{
|
||||
List<long> createdTagList = new List<long>();
|
||||
|
||||
//CREATE
|
||||
dynamic d = new JObject();
|
||||
|
||||
|
||||
d.name = Util.Uniquify("Apple");
|
||||
ApiResponse a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
createdTagList.Add(a.ObjectResponse["data"]["id"].Value<long>());
|
||||
|
||||
d.name = Util.Uniquify("Applesauce");
|
||||
a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
createdTagList.Add(a.ObjectResponse["data"]["id"].Value<long>());
|
||||
|
||||
d.name = Util.Uniquify("Apple-Tar-Tar");
|
||||
a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
createdTagList.Add(a.ObjectResponse["data"]["id"].Value<long>());
|
||||
|
||||
d.name = Util.Uniquify("Apple-Tini");
|
||||
a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
createdTagList.Add(a.ObjectResponse["data"]["id"].Value<long>());
|
||||
|
||||
d.name = Util.Uniquify("Apple-Pie");
|
||||
a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
createdTagList.Add(a.ObjectResponse["data"]["id"].Value<long>());
|
||||
|
||||
d.name = Util.Uniquify("AppleJack");
|
||||
a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
createdTagList.Add(a.ObjectResponse["data"]["id"].Value<long>());
|
||||
|
||||
|
||||
//Get all
|
||||
a = await Util.GetAsync("Tag/picklist?Offset=1&Limit=25&q=ApPlE", await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
Util.ValidateHTTPStatusCode(a, 200);
|
||||
//there should be at least 5 of them
|
||||
((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(4);
|
||||
|
||||
|
||||
//Delete them all here (just a cleanup)
|
||||
foreach (long lId in createdTagList)
|
||||
{
|
||||
a = await Util.DeleteAsync("Tag/" + lId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(a, 204);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//==================================================
|
||||
|
||||
}//eoc
|
||||
}//eons
|
||||
@@ -1,375 +0,0 @@
|
||||
using System;
|
||||
using Xunit;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using FluentAssertions;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
namespace raven_integration
|
||||
{
|
||||
|
||||
public class TagMapOps
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Test tagmap map unmap and etc
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public async void MapUnmapShouldWork()
|
||||
{
|
||||
/*
|
||||
{
|
||||
"name": "TestTag"
|
||||
}
|
||||
*/
|
||||
|
||||
//CREATE TAG
|
||||
dynamic d = new JObject();
|
||||
d.name = Util.Uniquify("test-tag-4-widget");
|
||||
|
||||
|
||||
ApiResponse a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
long tagId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
|
||||
//CREATE WIDGET
|
||||
dynamic w = new JObject();
|
||||
w.name = Util.Uniquify("WIDGET_TAG");
|
||||
w.created = DateTime.Now.ToString();
|
||||
w.dollarAmount = 1.11m;
|
||||
w.active = true;
|
||||
w.roles = 0;
|
||||
|
||||
a = await Util.PostAsync("Widget", await Util.GetTokenAsync("BizAdminFull"), w.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
long widgetId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
//CREATE TAGMAP (tag the widget)
|
||||
/*
|
||||
{
|
||||
"tagId": 0,
|
||||
"tagToObjectId": 0,
|
||||
"tagToObjectType": 0
|
||||
}
|
||||
*/
|
||||
dynamic tm = new JObject();
|
||||
tm.tagId = tagId;
|
||||
tm.tagToObjectId = widgetId;
|
||||
tm.tagToObjectType = 2;//widget
|
||||
|
||||
|
||||
a = await Util.PostAsync("TagMap", await Util.GetTokenAsync("BizAdminFull"), tm.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
long tagMapId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
//VERIFY TAGMAP
|
||||
a = await Util.GetAsync("TagMap/" + tagMapId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
a.ObjectResponse["data"]["id"].Value<long>().Should().Be(tagMapId);
|
||||
|
||||
|
||||
//ATTEMPT TO DELETE TAG THAT HAS TAGMAP SHOULD FAIL with 2200 / 400
|
||||
a = await Util.DeleteAsync("Tag/" + tagId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateViolatesReferentialIntegrityError(a);
|
||||
|
||||
//DELETE TAGMAP
|
||||
a = await Util.DeleteAsync("TagMap/" + tagMapId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(a, 204);
|
||||
|
||||
//DELETE TAG
|
||||
a = await Util.DeleteAsync("Tag/" + tagId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(a, 204);
|
||||
|
||||
//DELETE WIDGET
|
||||
a = await Util.DeleteAsync("Widget/" + widgetId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(a, 204);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public async void TagMapShouldDeleteWhenParentDeletes()
|
||||
{
|
||||
/*
|
||||
{
|
||||
"name": "TestTag"
|
||||
}
|
||||
*/
|
||||
|
||||
//CREATE TAG
|
||||
dynamic d = new JObject();
|
||||
d.name = Util.Uniquify("test-unmap-tag-4-widget");
|
||||
|
||||
|
||||
ApiResponse a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
long tagId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
|
||||
//CREATE WIDGET
|
||||
dynamic w = new JObject();
|
||||
w.name = Util.Uniquify("WIDGET_TAG_AUTO_UNMAP");
|
||||
w.created = DateTime.Now.ToString();
|
||||
w.dollarAmount = 1.11m;
|
||||
w.active = true;
|
||||
w.roles = 0;
|
||||
|
||||
a = await Util.PostAsync("Widget", await Util.GetTokenAsync("BizAdminFull"), w.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
long widgetId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
//CREATE TAGMAP (tag the widget)
|
||||
/*
|
||||
{
|
||||
"tagId": 0,
|
||||
"tagToObjectId": 0,
|
||||
"tagToObjectType": 0
|
||||
}
|
||||
*/
|
||||
dynamic tm = new JObject();
|
||||
tm.tagId = tagId;
|
||||
tm.tagToObjectId = widgetId;
|
||||
tm.tagToObjectType = 2;//widget
|
||||
|
||||
|
||||
a = await Util.PostAsync("TagMap", await Util.GetTokenAsync("BizAdminFull"), tm.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
long tagMapId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
//VERIFY TAGMAP
|
||||
a = await Util.GetAsync("TagMap/" + tagMapId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
a.ObjectResponse["data"]["id"].Value<long>().Should().Be(tagMapId);
|
||||
|
||||
|
||||
//DELETE PARENT (WIDGET)
|
||||
a = await Util.DeleteAsync("Widget/" + widgetId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(a, 204);
|
||||
|
||||
//VERIFY TAGMAP GONE
|
||||
a = await Util.GetAsync("TagMap/" + tagMapId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateResponseNotFound(a);
|
||||
|
||||
|
||||
////////////////////////
|
||||
//CLEANUP
|
||||
|
||||
//DELETE TAG
|
||||
a = await Util.DeleteAsync("Tag/" + tagId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(a, 204);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public async void TagMapListForObject()
|
||||
{
|
||||
List<long> createdTagList = new List<long>();
|
||||
|
||||
//CREATE a bunch of tags
|
||||
dynamic d = new JObject();
|
||||
|
||||
|
||||
d.name = Util.Uniquify("Red");
|
||||
ApiResponse a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
createdTagList.Add(a.ObjectResponse["data"]["id"].Value<long>());
|
||||
|
||||
d.name = Util.Uniquify("red-green");
|
||||
a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
createdTagList.Add(a.ObjectResponse["data"]["id"].Value<long>());
|
||||
|
||||
d.name = Util.Uniquify("red-rum");
|
||||
a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
createdTagList.Add(a.ObjectResponse["data"]["id"].Value<long>());
|
||||
|
||||
d.name = Util.Uniquify("red-dit");
|
||||
a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
createdTagList.Add(a.ObjectResponse["data"]["id"].Value<long>());
|
||||
|
||||
d.name = Util.Uniquify("red-tailed-hawk");
|
||||
a = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
createdTagList.Add(a.ObjectResponse["data"]["id"].Value<long>());
|
||||
|
||||
|
||||
//Create a widget
|
||||
dynamic w = new JObject();
|
||||
w.name = Util.Uniquify("WIDGET_4_TAG_LIST_TEST");
|
||||
w.created = DateTime.Now.ToString();
|
||||
w.dollarAmount = 1.11m;
|
||||
w.active = true;
|
||||
w.roles = 0;
|
||||
|
||||
a = await Util.PostAsync("Widget", await Util.GetTokenAsync("BizAdminFull"), w.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
long widgetId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
|
||||
//Tag all the tags to the widget
|
||||
dynamic tm = new JObject();
|
||||
foreach (long tagId in createdTagList)
|
||||
{
|
||||
tm.tagId = tagId;
|
||||
tm.tagToObjectId = widgetId;
|
||||
tm.tagToObjectType = 2;//widget
|
||||
|
||||
a = await Util.PostAsync("TagMap", await Util.GetTokenAsync("BizAdminFull"), tm.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
}
|
||||
|
||||
//GET TAGS FOR WIDGET
|
||||
dynamic tid = new JObject();
|
||||
tid.objectId = widgetId;
|
||||
tid.objectType = 2;//widget
|
||||
a = await Util.GetAsync("TagMap/TagsOnObject/", await Util.GetTokenAsync("BizAdminFull"), tid.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
Util.ValidateHTTPStatusCode(a, 200);
|
||||
//there should be at least 5 of them
|
||||
((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterOrEqualTo(createdTagList.Count);
|
||||
|
||||
//delete widget (which will delete tagmaps as well)
|
||||
a = await Util.DeleteAsync("Widget/" + widgetId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(a, 204);
|
||||
|
||||
|
||||
|
||||
//CLEANUP TAGS
|
||||
foreach (long lId in createdTagList)
|
||||
{
|
||||
a = await Util.DeleteAsync("Tag/" + lId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(a, 204);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Test tagging a bunch of items then mass untag
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public async void UnTagEverythingWorks()
|
||||
{
|
||||
/*
|
||||
{
|
||||
"name": "TestTag"
|
||||
}
|
||||
*/
|
||||
|
||||
//CREATE TAG
|
||||
dynamic D = new JObject();
|
||||
D.name = Util.Uniquify("test-tag-4-untag");
|
||||
|
||||
|
||||
ApiResponse R = await Util.PostAsync("Tag", await Util.GetTokenAsync("BizAdminFull"), D.ToString());
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
long TestTagId = R.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
|
||||
//CREATE WIDGET 1
|
||||
dynamic D2 = new JObject();
|
||||
D2.name = Util.Uniquify("WIDGET_UNTAG_TEST1");
|
||||
D2.created = DateTime.Now.ToString();
|
||||
D2.dollarAmount = 1.11m;
|
||||
D2.active = true;
|
||||
D2.roles = 0;
|
||||
|
||||
R = await Util.PostAsync("Widget", await Util.GetTokenAsync("BizAdminFull"), D2.ToString());
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
long Widget1Id = R.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
//CREATE WIDGET 2
|
||||
//D2 = new JObject();
|
||||
D2.name = Util.Uniquify("WIDGET_UNTAG_TEST2");
|
||||
D2.created = DateTime.Now.ToString();
|
||||
D2.dollarAmount = 1.11m;
|
||||
D2.active = true;
|
||||
D2.roles = 0;
|
||||
|
||||
R = await Util.PostAsync("Widget", await Util.GetTokenAsync("BizAdminFull"), D2.ToString());
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
long Widget2Id = R.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
//TAGMAP to Widget 1
|
||||
/*
|
||||
{
|
||||
"tagId": 0,
|
||||
"tagToObjectId": 0,
|
||||
"tagToObjectType": 0
|
||||
}
|
||||
*/
|
||||
dynamic D3 = new JObject();
|
||||
D3.tagId = TestTagId;
|
||||
D3.tagToObjectId = Widget1Id;
|
||||
D3.tagToObjectType = 2;//widget
|
||||
|
||||
|
||||
R = await Util.PostAsync("TagMap", await Util.GetTokenAsync("BizAdminFull"), D3.ToString());
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
long TagMap1Id = R.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
//VERIFY TAGMAP
|
||||
R = await Util.GetAsync("TagMap/" + TagMap1Id.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
R.ObjectResponse["data"]["id"].Value<long>().Should().Be(TagMap1Id);
|
||||
R.ObjectResponse["data"]["tagToObjectId"].Value<long>().Should().Be(Widget1Id);
|
||||
|
||||
|
||||
//TAGMAP to Widget 2
|
||||
D3.tagId = TestTagId;
|
||||
D3.tagToObjectId = Widget2Id;
|
||||
D3.tagToObjectType = 2;//widget
|
||||
|
||||
|
||||
R = await Util.PostAsync("TagMap", await Util.GetTokenAsync("BizAdminFull"), D3.ToString());
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
long TagMap2Id = R.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
//VERIFY TAGMAP
|
||||
R = await Util.GetAsync("TagMap/" + TagMap2Id.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateDataReturnResponseOk(R);
|
||||
R.ObjectResponse["data"]["id"].Value<long>().Should().Be(TagMap2Id);
|
||||
R.ObjectResponse["data"]["tagToObjectId"].Value<long>().Should().Be(Widget2Id);
|
||||
|
||||
//UNTAG-ALL
|
||||
R = await Util.PostAsync("Tag/UntagAll/" + TestTagId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(R, 204);
|
||||
|
||||
|
||||
//DELETE TAG
|
||||
//This should now work because untag all freed it up
|
||||
R = await Util.DeleteAsync("Tag/" + TestTagId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(R, 204);
|
||||
|
||||
//DELETE WIDGETS
|
||||
R = await Util.DeleteAsync("Widget/" + Widget1Id.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(R, 204);
|
||||
|
||||
R = await Util.DeleteAsync("Widget/" + Widget2Id.ToString(), await Util.GetTokenAsync("BizAdminFull"));
|
||||
Util.ValidateHTTPStatusCode(R, 204);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//==================================================
|
||||
|
||||
}//eoc
|
||||
}//eons
|
||||
Reference in New Issue
Block a user