public async Task ContinueConversationLaterTests() { var queueName = nameof(ContinueConversationLaterTests).ToLower(); var cr = TestAdapter.CreateConversation(nameof(ContinueConversationLaterTests)); var adapter = new TestAdapter(cr) .UseStorage(new MemoryStorage()) .UseBotState(new ConversationState(new MemoryStorage()), new UserState(new MemoryStorage())); var queueStorage = new MockQueue(); var dm = new DialogManager(new ContinueConversationLater() { Date = "=addSeconds(utcNow(), 2)", Value = "foo" }); dm.InitialTurnState.Set <QueueStorage>(queueStorage); await new TestFlow((TestAdapter)adapter, dm.OnTurnAsync) .Send("hi") .StartTestAsync(); await Task.Delay(2000); var activity = await queueStorage.ReceiveActivity(); Assert.Equal(ActivityTypes.Event, activity.Type); Assert.Equal(ActivityEventNames.ContinueConversation, activity.Name); Assert.Equal("foo", activity.Value); Assert.NotNull(activity.RelatesTo); var cr2 = activity.GetConversationReference(); cr.ActivityId = null; cr2.ActivityId = null; Assert.Equal(JsonConvert.SerializeObject(cr), JsonConvert.SerializeObject(cr2)); }
public async Task GetConversationReferenceTest() { var conv1 = $"{nameof(ContinueConversationTests)}1"; var cr1 = TestAdapter.CreateConversation(conv1); var adapter = new TestAdapter(cr1) .UseStorage(new MemoryStorage()) .UseBotState(new ConversationState(new MemoryStorage()), new UserState(new MemoryStorage())); var queueStorage = new MockQueue(); var dm = new DialogManager(new AdaptiveDialog() { Triggers = new List <OnCondition>() { new OnMessageActivity() { Actions = new List <Dialog>() { new GetConversationReference() { Property = "$cr" }, new AssertCondition() { Condition = "$cr.channelId == 'test' " }, new AssertCondition() { Condition = $"$cr.conversation.id == '{cr1.Conversation.Id}' " }, new AssertCondition() { Condition = $"$cr.conversation.id == turn.activity.conversation.id" }, new AssertCondition() { Condition = $"$cr.bot.id == turn.activity.recipient.id" }, new AssertCondition() { Condition = $"$cr.user.id == turn.activity.from.id" }, new SendActivity("ok") } } } }); dm.InitialTurnState.Set <QueueStorage>(queueStorage); await new TestFlow((TestAdapter)adapter, dm.OnTurnAsync) .Send("hi") .AssertReply($"ok") .StartTestAsync(); }
public async Task ContinueConversationTests() { var conv1 = $"{nameof(ContinueConversationTests)}1"; var conv2 = $"{nameof(ContinueConversationTests)}2"; var cr1 = TestAdapter.CreateConversation(conv1); var cr2 = TestAdapter.CreateConversation(conv2); var adapter = new TestAdapter(cr1) .UseStorage(new MemoryStorage()) .UseBotState(new ConversationState(new MemoryStorage()), new UserState(new MemoryStorage())); var queueStorage = new MockQueue(); var dm = new DialogManager(new AdaptiveDialog() { Triggers = new List <OnCondition>() { new OnMessageActivity() { Actions = new List <Dialog>() { new ContinueConversation() { ConversationReference = cr2, Value = "foo" }, new SendActivity() { Activity = new ActivityTemplate("ContinueConversation Sent") } } } } }); dm.InitialTurnState.Set <QueueStorage>(queueStorage); await new TestFlow((TestAdapter)adapter, dm.OnTurnAsync) .Send("hi") .AssertReply("ContinueConversation Sent") .StartTestAsync(); var activity = await queueStorage.ReceiveActivity(); Assert.Equal(ActivityTypes.Event, activity.Type); Assert.Equal(ActivityEventNames.ContinueConversation, activity.Name); Assert.Equal("foo", activity.Value); Assert.NotNull(activity.RelatesTo); var crReceived = activity.GetConversationReference(); cr2.ActivityId = null; crReceived.ActivityId = null; Assert.Equal(JsonConvert.SerializeObject(cr2), JsonConvert.SerializeObject(crReceived)); }