From c105bc1724c2e775360e7b67b835dfd60bbc28f9 Mon Sep 17 00:00:00 2001 From: Emad Elwany Date: Fri, 4 May 2018 23:14:27 -0700 Subject: [PATCH] Fix breaking change in LUIS Apis and unit tests --- .../Dialogs/LuisDialog.cs | 9 +++++++-- .../DialogTestBase.cs | 18 ++++++++++-------- .../Microsoft.Bot.Builder.Tests/LuisTests.cs | 7 ++++++- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/CSharp/Library/Microsoft.Bot.Builder/Dialogs/LuisDialog.cs b/CSharp/Library/Microsoft.Bot.Builder/Dialogs/LuisDialog.cs index 26cb69de7f..289bd12f46 100644 --- a/CSharp/Library/Microsoft.Bot.Builder/Dialogs/LuisDialog.cs +++ b/CSharp/Library/Microsoft.Bot.Builder/Dialogs/LuisDialog.cs @@ -119,7 +119,7 @@ private InvalidIntentHandlerException(SerializationInfo info, StreamingContext c /// public class LuisServiceResult { - public LuisServiceResult(LuisResult result, IntentRecommendation intent, ILuisService service, ILuisOptions luisRequest) + public LuisServiceResult(LuisResult result, IntentRecommendation intent, ILuisService service, ILuisOptions luisRequest = null) { this.Result = result; this.BestIntent = intent; @@ -145,6 +145,7 @@ public class LuisDialog : IDialog { public const string LuisTraceType = "https://www.luis.ai/schemas/trace"; public const string LuisTraceLabel = "Luis Trace"; + public const string LuisTraceName = "LuisDialog"; public const string Obfuscated = "****"; protected readonly IReadOnlyList services; @@ -327,12 +328,16 @@ private static async Task EmitTraceInfo(IBotContext context, LuisResult luisResu LuisOptions = luisOptions, LuisModel = RemoveSensitiveData(luisModel) }; - var activity = Activity.CreateTraceActivityReply(context.Activity as Activity, "LuisDialog", LuisTraceType, luisTraceInfo, LuisTraceLabel) as IMessageActivity; + var activity = Activity.CreateTraceActivityReply(context.Activity as Activity, LuisTraceName, LuisTraceType, luisTraceInfo, LuisTraceLabel) as IMessageActivity; await context.PostAsync(activity).ConfigureAwait(false); } public static ILuisModel RemoveSensitiveData(ILuisModel luisModel) { + if (luisModel == null) + { + return null; + } return new LuisModelAttribute(luisModel.ModelID, Obfuscated,luisModel.ApiVersion, luisModel.UriBase.Host, luisModel.Threshold); } diff --git a/CSharp/Tests/Microsoft.Bot.Builder.Tests/DialogTestBase.cs b/CSharp/Tests/Microsoft.Bot.Builder.Tests/DialogTestBase.cs index 94eb839331..a236962b51 100644 --- a/CSharp/Tests/Microsoft.Bot.Builder.Tests/DialogTestBase.cs +++ b/CSharp/Tests/Microsoft.Bot.Builder.Tests/DialogTestBase.cs @@ -172,24 +172,26 @@ public static async Task AssertScriptAsync(ILifetimeScope container, params stri while (queue.Count > 0) { - ++index; - var toUser = queue.Dequeue(); - string actual; switch (toUser.Type) { case ActivityTypes.Message: - actual = toUser.Text; + Assert.AreEqual(pairs[++index], toUser.Text); break; case ActivityTypes.EndOfConversation: - actual = toUser.AsEndOfConversationActivity().Code; + Assert.AreEqual(pairs[++index], toUser.AsEndOfConversationActivity().Code); + break; + case ActivityTypes.Trace: + var trace = toUser.AsTraceActivity(); + Assert.IsNotNull(trace.Value); + Assert.AreEqual(LuisDialog.LuisTraceLabel, trace.Label); + Assert.AreEqual(LuisDialog.LuisTraceType, trace.ValueType); + Assert.AreEqual(LuisDialog.LuisTraceName, trace.Name); break; default: throw new NotImplementedException(); } - var expected = pairs[index]; - - Assert.AreEqual(expected, actual); + } } } diff --git a/CSharp/Tests/Microsoft.Bot.Builder.Tests/LuisTests.cs b/CSharp/Tests/Microsoft.Bot.Builder.Tests/LuisTests.cs index 688d9a73b9..be7c772899 100644 --- a/CSharp/Tests/Microsoft.Bot.Builder.Tests/LuisTests.cs +++ b/CSharp/Tests/Microsoft.Bot.Builder.Tests/LuisTests.cs @@ -360,11 +360,16 @@ public async Task Service_With_LuisActionDialog() var intent = "IntentOne"; var prompt = "ParamOne?"; var action = "IntentOneAction"; + var model = new LuisModelAttribute("model", "subs", LuisApiVersion.V2); + + service + .Setup(l => l.LuisModel) + .Returns(model); service .Setup(l => l.BuildUri(It.IsAny())) .Returns(request => - request.BuildUri(new LuisModelAttribute("model", "subs", LuisApiVersion.V2)) + request.BuildUri(model) ); service