internal AwaitableFromItem <IMessageActivity> stringToMessageActivity(IDialogContext context, string message) { var messageActivity = context.MakeMessage(); messageActivity.Text = message; var awaitble = new AwaitableFromItem <IMessageActivity>(messageActivity); return(awaitble); }
public async Task Should_Execute_ActionOne_Then_Post_Message() { //Arrange var service = new Mock <IWitService>(); var counter = 0; service.Setup(wit => wit.QueryAsync(It.IsAny <IWitRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(() => { switch (counter) { case 0: counter++; return(new WitResult() { Type = "action", Action = "ActionOne" }); case 1: counter++; return(new WitResult() { Type = "msg", Message = "test" }); case 2: counter++; return(new WitResult() { Type = "stop", }); } Assert.Fail("The dialog did not stop after the stop response from wit"); return(default(WitResult)); }); var dialog = new TestWitDialog(service.Object); var message = MakeTestMessage(); message.Text = "execute action one, then respond with message \"test\", then stop"; var item = new AwaitableFromItem <IMessageActivity>(message); var context = new Mock <IDialogContext>(MockBehavior.Loose); context.Setup(c => c.MakeMessage()).Returns(() => new Activity()); //Act await dialog.MessageReceived(context.Object, item); //Assert context.Verify(c => c.PostAsync(It.Is <IMessageActivity>(a => a.Text == "ActionOne"), It.IsAny <CancellationToken>()), Times.Once); context.Verify(c => c.PostAsync(It.Is <IMessageActivity>(a => a.Text == "test"), It.IsAny <CancellationToken>()), Times.Once); context.Verify(c => c.PostAsync(It.Is <IMessageActivity>(a => a.Text == "ActionTwo"), It.IsAny <CancellationToken>()), Times.Never); }
public async Task StartAsync(IDialogContext context) { if (!context.UserData.ContainsKey("level")) { var question = await DTML.EduBot.Common.MessageTranslator.TranslateTextAsync("How much English do you already know?"); PromptDialog.Choice( context, this.AfterLevelSelected, LevelChoices, question, Shared.DoNotUnderstand, attempts: Shared.MaxPromptAttempts); } else { IAwaitable <string> result = new AwaitableFromItem <string>(context.UserData.GetValue <string>("level")); await AfterLevelSelected(context, result); } }