Наследование: Twilio.TwiML.Mvc.TwilioController
        public void GivenAHangupAction_ThenTheResponseContainsHangup()
        {
            var controller = new RecordingsController();
            var result = controller.Hangup();

            result.ExecuteResult(MockControllerContext.Object);
            var document = BuildDocument();

            Assert.That(document.SelectSingleNode("Response/Hangup"), Is.Not.Null);
        }
        public void GivenARecordAction_ThenTheResponseContainsRecord()
        {
            var controller = new RecordingsController {Url = Url};
            var result = controller.Record();

            result.ExecuteResult(MockControllerContext.Object);
            var document = BuildDocument();

            Assert.That(document.SelectSingleNode("Response/Record").Attributes["finishOnKey"].Value,
                Is.EqualTo("*"));
        }
        public void GivenAnIndexAction_WhenClientHasRecordings_ThenShowsTheRecordings()
        {
            var mockClient = new Mock<IClient>();
            mockClient.Setup(c => c.Recordings()).Returns(new List<Recording>
            {
                new Recording {Uri = new Uri("/recording", UriKind.Relative), DateCreated = new DateTime(2015, 01, 01)},
                new Recording {Uri = new Uri("/recording", UriKind.Relative), DateCreated = new DateTime(2015, 01, 01)}
            });

            var stubPhoneNumbers = Mock.Of<IPhoneNumbers>();

            var controller = new RecordingsController(mockClient.Object, stubPhoneNumbers);
            var result = controller.Index();

            result.ExecuteResult(MockControllerContext.Object);

            var recordings = Json.Decode<IList<IDictionary<string, string>>>(Result.ToString());
            Assert.That(recordings.Count, Is.EqualTo(2));
        }
        public void GivenACreateAction_ThenCallIsCalledOnce()
        {
            var mockClient = new Mock<IClient>();
            mockClient.Setup(c => c.Call(It.IsAny<CallOptions>()));

            var mockPhoneNumbers = new Mock<IPhoneNumbers>();
            mockPhoneNumbers.Setup(p => p.Twilio).Returns("twilio-phone-number");

            var mockCustomRequest = new Mock<ICustomRequest>();
            mockCustomRequest.Setup(r => r.Url).Returns("http://example.com");

            var controller = new RecordingsController(
                mockClient.Object, mockPhoneNumbers.Object, mockCustomRequest.Object) {Url = Url};
            var result = controller.Create("phone-number");

            result.ExecuteResult(MockControllerContext.Object);

            mockClient.Verify(c => c.Call(It.IsAny<CallOptions>()), Times.Once);
        }