private Response CreateServiceReponse(TestServiceResponse serviceReponse)
 {
     switch (serviceReponse)
     {
         case TestServiceResponse.One:
             return new Response()
                    {
                        Data = 1,
                        StatusCode = HttpStatusCode.OK
                    };
         case TestServiceResponse.Two:
             return new Response()
                    {
                        Data = 2,
                        StatusCode = HttpStatusCode.OK
                    };
         case TestServiceResponse.TimeOut:
             return new Response()
                    {
                        Data = -1,
                        StatusCode = HttpStatusCode.GatewayTimeout
                    };
         case TestServiceResponse.Error:
             return new Response()
                    {
                        Data = -1,
                        StatusCode = HttpStatusCode.BadRequest
                    };
         default:
             throw new Exception();
     }
 }
        public void IncomingCallTest(string callerId, TestServiceResponse serviceReponse, string expectedGroup)
        {
            var service = A.Fake<IMockWebService>();
            var mockResponse = CreateServiceReponse(serviceReponse);
            service.CallsTo(s => s.ProcessCall(callerId))
                   .Returns(mockResponse);

            var log = A.Fake<ILogger>();
            var _sut = new CallPlanner(service,log);

            var assignedGroup = _sut.AssignToGroup(callerId).Result;

            assignedGroup.Should()
                         .BeEquivalentTo(expectedGroup);

            A.CallTo(() => log.Log("Receive call from \"" + callerId + "\""))
             .MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() =>
                     log.Log("Invoke Web Service with \"" + callerId + "\", response is \"" +
                             TextualResponse(mockResponse) + "\""))
             .MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => log.Log("Deliver to group \"" + expectedGroup + "\""))
             .MustHaveHappened(Repeated.Exactly.Once);
        }