public void Compose()
        {
            // Arrange
            Mock <User> userMock = new Mock <User>();

            userMock.Expect(u => u.GetBuddyList())
            .Returns(new BuddyList[0]).AtMostOnce().Verifiable();
            Mock <GameManager>      managerMock = new Mock <GameManager>(userMock.Object);
            CommunicationController controller  = new CommunicationController(managerMock.Object);

            // Act
            ActionResult result = controller.Compose(null);

            // Assert
            Assert.That(result, Is.TypeOf(typeof(ViewResult)), "Should return a view");
            Assert.That(controller.ModelState.IsValid, "No errors should be returned");
            ViewResult viewResult = (ViewResult)result;

            Assert.That(viewResult.ViewData["toUserId"], Is.InstanceOfType(typeof(SelectList)), "toUserId should be an SelectList of buddies");
            managerMock.Verify();
        }
        public void ComposeToUser()
        {
            // Arrange
            Mock <User> toUserMock = new Mock <User>();
            Mock <User> userMock   = new Mock <User>();

            userMock.Expect(u => u.SendMessage(toUserMock.Object, "Test Subject", "Test Message"))
            .AtMostOnce().Verifiable();
            Mock <GameManager> managerMock = new Mock <GameManager>(userMock.Object);

            managerMock.Expect(m => m.GetUser(5))
            .Returns(toUserMock.Object).AtMostOnce().Verifiable();
            CommunicationController controller = new CommunicationController(managerMock.Object);

            // Act
            ActionResult result = controller.Compose(5, "Test Subject", "Test Mesage");

            // Assert
            Assert.That(result, Is.TypeOf(typeof(RedirectToRouteResult)), "Should return a redirect");
            Assert.That(controller.ModelState.IsValid, "No errors should be returned");

            managerMock.Verify();
        }