public void ViewMessage()
        {
            // Arrange
            Mock <Message> messageMock = new Mock <Message>();
            Mock <User>    toUserMock  = new Mock <User>();

            toUserMock.Expect(u => u.UserName)
            .Returns("To username").Verifiable();

            Mock <User> userMock = new Mock <User>();

            userMock.Expect(u => u.UserName)
            .Returns("From username").Verifiable();

            // Setup message mock
            messageMock.Expect(m => m.RecipientUser)
            .Returns(toUserMock.Object).Verifiable();
            messageMock.Expect(m => m.SenderUser)
            .Returns(userMock.Object).Verifiable();
            messageMock.Expect(m => m.Subject)
            .Returns("Message Subject").Verifiable();
            DateTime messageDate = new DateTime(2009, 2, 10, 6, 54, 3);

            messageMock.Expect(m => m.Time)
            .Returns(messageDate).Verifiable();
            messageMock.Expect(m => m.Content)
            .Returns("Message Content").Verifiable();

            userMock.Expect(u => u.GetMessage(50))
            .Returns(messageMock.Object).AtMostOnce().Verifiable();
            Mock <GameManager> managerMock = new Mock <GameManager>(userMock.Object);

            CommunicationController controller = new CommunicationController(managerMock.Object);

            // Act
            ActionResult result = controller.ViewMessage(50, false);

            // 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["From"], Is.EqualTo("From username"), "From field should match from user name");
            Assert.That(viewResult.ViewData["To"], Is.EqualTo("To username"), "To field should match target user name");
            Assert.That(viewResult.ViewData["Subject"], Is.EqualTo("Message Subject"), "Subject field should match message subject");
            Assert.That(viewResult.ViewData["Time"], Is.EqualTo(messageDate), "To field should match target user name");
            Assert.That(viewResult.ViewData["Content"], Is.EqualTo("Message Content"), "Content field should match message content");

            managerMock.Verify();
        }