public override async Task OnConnected() { string username = Context.User.Identity.Name; string connectionId = Context.ConnectionId; Logger.Debug("OnConnected for {username} and {connectionId}", username, connectionId); await GetUserProjectsAndBuildsAndSendTheInfoToClient(username, connectionId); await _refreshInfo.SendRefreshBuildResults(connectionId); await base.OnConnected(); }
public async Task OnConnect_QueriesUserProjectAndBuildConfigs_AndSendMappedInfoToClient_AndTriggersRefreshForThisClient() { string username = _fixture.Create <string>(); string connectionId = _fixture.Create <string>(); A.CallTo(() => _principal.Identity.Name).Returns(username); A.CallTo(() => _context.ConnectionId).Returns(connectionId); A.CallTo(() => _context.User).Returns(_principal); List <Project> projects = _fixture.CreateMany <Project>().ToList(); A.CallTo(() => _infoQuery.GetUserProjectsAndBuildConfigs(username)) .Returns(projects); A.CallTo(() => _fakeClients.Client(connectionId)).Returns(_fakeClient); CiDashboardHub hub = new CiDashboardHub(_connectionsManager, _commandProcessor, _infoQuery, _refreshInfo) { Context = _context }; hub.Clients = _fakeClients; await hub.OnConnected(); A.CallTo(() => _infoQuery.GetUserProjectsAndBuildConfigs(username)) .MustHaveHappened(); List <string> buildCiIds = projects .SelectMany( p => p.Builds .Where(b => !string.IsNullOrEmpty(b.CiExternalId)) .ToList()) .Select(b => b.CiExternalId) .ToList(); A.CallTo(() => _connectionsManager.AddBuildConfigs(connectionId, A <IEnumerable <BuildConfig> > .That.Matches(l => !l.Select(b => b.CiExternalId).Except(buildCiIds).Any()))) .MustHaveHappened(); A.CallTo(() => _refreshInfo.SendRefreshBuildResults(connectionId)) .MustHaveHappened(); A.CallTo(() => _fakeClient .SendProjectsAndBuildConfigs(projects)) .MustHaveHappened(); }