Exemplo n.º 1
0
        public async Task CodeRunnerConsoleInTestAsync()
        {
            // Arrange - Clients
            var mockClients = new Mock <IHubCallerConnectionContext <ICodeRunnerHubClient> >();
            var mockCaller  = new Mock <ICodeRunnerHubClient>();

            mockClients.Setup(m => m.Caller).Returns(mockCaller.Object);

            // Arrange - Context
            var context = new HubCallerContext(null, "CodeRunnerConsoleInTestAsyncConnection");

            // Arrange - Runner
            string      code       = "<Test code>";
            ICodeRunner stubRunner = new CodeRunnerStub();

            // Arrange - Repository
            var userServices = new Mock <IUserServices>();

            userServices.Setup(r => r.GetCurrentUserId()).Returns("UnitTestId");
            var mockDb = new Mock <ICodingTrainerRepository>();

            // Arrange - Class under test - Hub
            var hub = new CodeRunnerHub(stubRunner, userServices.Object, mockDb.Object)
            {
                Clients = mockClients.Object,
                Context = context
            };

            // Arrange - set up Caller
            mockCaller.Setup(c => c.ConsoleOut("Hello Test")).Callback(() => hub.ConsoleIn("Console In"));

            // Act
            await hub.Run(code);

            // Assert
            Assert.Multiple(() => {
                mockCaller.Verify(c => c.ConsoleOut("Hello Test"), Times.Once);
                mockCaller.Verify(c => c.ConsoleOut("Received"), Times.Once);
                mockCaller.Verify(c => c.Complete(), Times.Once);
            });
        }
Exemplo n.º 2
0
        public async Task CodeRunnerTestAsync()
        {
            // Arrange - Clients
            var mockClients = new Mock <IHubCallerConnectionContext <ICodeRunnerHubClient> >();
            var mockCaller  = new Mock <ICodeRunnerHubClient>();

            mockClients.Setup(m => m.Caller).Returns(mockCaller.Object);

            // Arrange - Context
            var context = new HubCallerContext(null, "CodeRunnerTestAsyncConnection");

            // Arrange - Runner
            string code       = "<Test code>";
            var    mockRunner = new Mock <ICodeRunner>();

            mockRunner.Setup(r => r.CompileAndRunAsync(code)).Returns(Task.CompletedTask).Raises(r => r.ConsoleWrite += null, new ConsoleWriteEventArgs("Hello Test"));

            // Arrange - Repository
            var userServices = new Mock <IUserServices>();

            userServices.Setup(r => r.GetCurrentUserId()).Returns("UnitTestId");
            var mockDb = new Mock <ICodingTrainerRepository>();

            // Arrange - Class under test - Hub
            var hub = new CodeRunnerHub(mockRunner.Object, userServices.Object, mockDb.Object)
            {
                Clients = mockClients.Object,
                Context = context
            };

            // Act
            await hub.Run(code);

            // Assert
            Assert.Multiple(() => {
                mockCaller.Verify(c => c.ConsoleOut("Hello Test"), Times.Once);
                mockCaller.Verify(c => c.Complete(), Times.Once);
            });
        }