public void WhenQueryingForQuestionnareTemplates_ThenProvidesQuestionnaireTemplateResult() { AsyncResult<IEnumerable<QuestionnaireTemplate>> ar = null; QuestionnaireTemplate[] suppliedQuestionnaire = new[] { new QuestionnaireTemplate() }; var serviceMock = new MockQuestionnaireService(); serviceMock.HandleBeginGetQuestionnaireTemplates = (r) => ar = r; var repository = new QuestionnaireRepository(serviceMock); IOperationResult<IEnumerable<QuestionnaireTemplate>> getResult = null; repository.GetQuestionnaireTemplatesAsync((result) => getResult = result); serviceMock.ProceedGetQuestionnaireTemplates(ar, suppliedQuestionnaire); EnqueueConditional(() => getResult != null); EnqueueCallback(() => { Assert.AreSame(suppliedQuestionnaire.ElementAt(0), getResult.Result.ElementAt(0)); }); EnqueueTestComplete(); }
public void WhenQueryingForQuestionnaireTemplates_ThenInvokesCallback() { AsyncResult<IEnumerable<QuestionnaireTemplate>> ar = null; var serviceMock = new MockQuestionnaireService(); serviceMock.HandleBeginGetQuestionnaireTemplates = (r) => ar = r; var repository = new QuestionnaireRepository(serviceMock); bool calledBack = false; repository.GetQuestionnaireTemplatesAsync((result) => { calledBack = true; }); serviceMock.ProceedGetQuestionnaireTemplates(ar, new[] { new QuestionnaireTemplate() }); EnqueueConditional(() => calledBack); EnqueueCallback(() => { Assert.IsTrue(calledBack); }); EnqueueTestComplete(); }
public void WhenQueryingForQuestionnaires_ThenPostsCallingThreadsSyncContext() { var mockAsyncResult = new Mock<IAsyncResult>(); var mockService = new Mock<IQuestionnaireService>(); mockService .Setup(s => s.BeginGetQuestionnaireTemplates(It.IsAny<AsyncCallback>(), It.IsAny<object>())) .Returns(mockAsyncResult.Object) .Callback<AsyncCallback, object>((c, o) => { System.Threading.ThreadPool.QueueUserWorkItem( (state) => { c(mockAsyncResult.Object); }); }); mockService .Setup(s => s.EndGetQuestionnaireTemplates(It.IsAny<IAsyncResult>())) .Returns(new[] { new QuestionnaireTemplate() }); var repository = new QuestionnaireRepository(mockService.Object); int callingThreadId = System.Threading.Thread.CurrentThread.ManagedThreadId; int calledBackThreadId = 0; IOperationResult<IEnumerable<QuestionnaireTemplate>> getResult = null; repository.GetQuestionnaireTemplatesAsync((r) => { getResult = r; calledBackThreadId = System.Threading.Thread.CurrentThread.ManagedThreadId; } ); EnqueueConditional(() => getResult != null); EnqueueCallback(() => { Assert.AreEqual(callingThreadId, calledBackThreadId); }); EnqueueTestComplete(); }
public void WhenExceptionOccursDuringQueryForQuestionnaireTemplateSummary_ThenExceptionCapturedAndReturned() { var mockAsyncResult = new Mock<IAsyncResult>(); var mockService = new Mock<IQuestionnaireService>(); mockService .Setup(s => s.BeginGetQuestionnaireTemplateSummary(It.IsAny<QuestionnaireTemplate>(), It.IsAny<AsyncCallback>(), It.IsAny<object>())) .Returns(mockAsyncResult.Object) .Callback<QuestionnaireTemplate, AsyncCallback, object>( (qt, c, o) => { c(mockAsyncResult.Object); }); mockService .Setup(s => s.EndGetQuestionnaireTemplateSummary(It.IsAny<IAsyncResult>())) .Throws(new NotImplementedException("TestException")); var repository = new QuestionnaireRepository(mockService.Object); IOperationResult<QuestionnaireTemplateSummary> getResult = null; repository.GetQuestionnaireTemplateSummaryAsync(new QuestionnaireTemplate(), (r) => { getResult = r; }); EnqueueConditional(() => getResult != null); EnqueueCallback(() => { Assert.IsInstanceOfType(getResult.Error, typeof(NotImplementedException)); }); EnqueueTestComplete(); }
public void WhenQueryingForQuestionnareTemplateSummary_ThenProvidesQuestionnaireTemplateSummaryResult() { AsyncResult<QuestionnaireTemplateSummary> ar = null; QuestionnaireTemplateSummary suppliedQuestionnaireTemplateSummary = new QuestionnaireTemplateSummary(); var serviceMock = new MockQuestionnaireService(); serviceMock.HandleBeginGetQuestionnaireTemplateSummary = (r) => ar = r; var repository = new QuestionnaireRepository(serviceMock); IOperationResult<QuestionnaireTemplateSummary> getResult = null; repository.GetQuestionnaireTemplateSummaryAsync(new QuestionnaireTemplate(), (result) => getResult = result); serviceMock.ProceedGetQuestionnaireTemplateSummary(ar, suppliedQuestionnaireTemplateSummary); EnqueueConditional(() => getResult != null); EnqueueCallback(() => { Assert.AreSame(suppliedQuestionnaireTemplateSummary, getResult.Result); }); EnqueueTestComplete(); }
public void WhenSubmittingQuestionnaire_ThenPostsToCallingThreadsSyncContext() { var mockAsyncResult = new Mock<IAsyncResult>(); var mockService = new Mock<IQuestionnaireService>(); mockService .Setup(s => s.BeginSubmitQuestionnaire(It.IsAny<Questionnaire>(), It.IsAny<AsyncCallback>(), It.IsAny<object>())) .Returns(mockAsyncResult.Object) .Callback<Questionnaire, AsyncCallback, object>((q, c, o) => { System.Threading.ThreadPool.QueueUserWorkItem( (state) => { c(mockAsyncResult.Object); }); }); mockService .Setup(s => s.EndSubmitQuestionnaire(It.IsAny<IAsyncResult>())); var repository = new QuestionnaireRepository(mockService.Object); int callingThreadId = System.Threading.Thread.CurrentThread.ManagedThreadId; int calledBackThreadId = 0; IOperationResult submitResult = null; repository.SubmitQuestionnaireAsync( new Questionnaire(), (r) => { submitResult = r; calledBackThreadId = System.Threading.Thread.CurrentThread.ManagedThreadId; } ); EnqueueConditional(() => submitResult != null); EnqueueCallback(() => { Assert.AreEqual(callingThreadId, calledBackThreadId); }); EnqueueTestComplete(); }
public void WhenSubmittingQuestionnare_ThenInvokesCallback() { AsyncResult<object> ar = null; var serviceMock = new MockQuestionnaireService(); serviceMock.HandleBeginSubmitResponses = (r) => ar = r; var repository = new QuestionnaireRepository(serviceMock); bool calledBack = false; repository.SubmitQuestionnaireAsync(new Questionnaire(), (result) => { calledBack = true; }); serviceMock.ProceedSubmitResponses(ar); EnqueueConditional(() => calledBack); EnqueueCallback(() => { Assert.IsTrue(calledBack); }); EnqueueTestComplete(); }
public void WhenServiceThrowsAnError_ThenErrorIsCaptured() { var mockAsyncResult = new Mock<IAsyncResult>(); var mockService = new Mock<IQuestionnaireService>(); mockService .Setup(s => s.BeginGetQuestionnaireTemplates(It.IsAny<AsyncCallback>(), It.IsAny<object>())) .Returns(mockAsyncResult.Object) .Callback<AsyncCallback, object>((c, o) => { c(mockAsyncResult.Object); }); mockService .Setup(s => s.EndGetQuestionnaireTemplates(It.IsAny<IAsyncResult>())) .Throws(new NotImplementedException("TestException")); var repository = new QuestionnaireRepository(mockService.Object); IOperationResult<IEnumerable<QuestionnaireTemplate>> getResult = null; repository.GetQuestionnaireTemplatesAsync((r) => { getResult = r; }); EnqueueConditional(() => getResult != null); EnqueueCallback(() => { Assert.IsInstanceOfType(getResult.Error, typeof(NotImplementedException)); }); EnqueueTestComplete(); }