public void ResultShouldContainAtLeastServiceMessage(Table data) { var ctx = ScenarioContext.Current.GetTestContext(); var messages = new TeamCityServiceMessageParser().Parse(ctx.TestSession.Output).ToList(); var map = new Dictionary <TableRow, IServiceMessage>(); foreach (var row in data.Rows) { foreach (var message in messages) { if (VerifyServiceMessage(row, message)) { map.Add(row, message); } } } var missingRows = data.Rows.Except(map.Keys).ToList(); if (missingRows.Any()) { var details = string.Join("\n", missingRows.Select(i => CreateErrorMessage(i))); Assert.Fail($"See {ctx}\n{details}"); } }
public void ResultShouldContainNumberServiceMessage(int expectedNumberOfServiceMessages) { var ctx = ScenarioContext.Current.GetTestContext(); var actualMessages = new TeamCityServiceMessageParser().Parse(ctx.TestSession.Output).ToList(); Assert.AreEqual(expectedNumberOfServiceMessages, actualMessages.Count); }
public void ResultShouldContainCorrectStructureAndSequence() { var ctx = ScenarioContext.Current.GetTestContext(); var messages = new TeamCityServiceMessageParser().Parse(ctx.TestSession.Output).ToList(); var rootFlow = new Flow(string.Empty); foreach (var serviceMessage in messages) { rootFlow.ProcessMessage(new Message(serviceMessage)); } }
public void ResultShouldContainServiceMessage(Table data) { var ctx = ScenarioContext.Current.GetTestContext(); var messages = new TeamCityServiceMessageParser().Parse(ctx.TestSession.Output).ToList(); Assert.AreEqual(data.RowCount, messages.Count, $"{ctx}\nExpected number of service messages is {data.RowCount} but actual is {messages.Count}"); var invalidMessages = ( from item in data.Rows.Zip(messages, (row, message) => new { row, message }) where !VerifyServiceMessage(item.row, item.message) select item).ToList(); if (invalidMessages.Any()) { var details = string.Join("\n", invalidMessages.Select(i => CreateErrorMessage(i.row, i.message))); Assert.Fail($"See {ctx}\n{details}"); } }
public void ResultShouldContainCorrectStructureAndSequence() { var ctx = ScenarioContext.Current.GetTestContext(); var messages = new TeamCityServiceMessageParser().Parse(ctx.TestSession.Output).ToList(); var rootFlows = new List <Flow>(); foreach (var serviceMessage in messages) { var message = new Message(serviceMessage); var flow = rootFlows.SingleOrDefault(i => i.FlowId == message.CurrentFlowId); if (flow == null) { flow = new Flow(message.FlowIdAttr); rootFlows.Add(flow); } flow.ProcessMessage(message); if (flow.IsFinished) { rootFlows.Remove(flow); } } }