internal static bool AddTestScenario(ITestSuite testSuite,
string testScenarioName,
string testScenarioId,
string testScenarioDescription,
string testSuiteName,
string testSuiteId,
Guid testPlatformId,
// 20141211
// ScriptBlock[] testScenarioBeforeTest,
// ScriptBlock[] testScenarioAfterTest)
ICodeBlock[] testScenarioBeforeTest,
ICodeBlock[] testScenarioAfterTest)
{
bool result = false;
// clean up the last empty test result
// in the previous scenario
if (null != CurrentTestScenario) {
if (CurrentTestScenario.TestResults.Count > 0) {
if (CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1].Details.Count == 0 &&
CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1].Status == TestStateNotTested) {
CurrentTestScenario.TestResults.RemoveAt(CurrentTestScenario.TestResults.Count - 1);
}
}
// if ((null != TestData.CurrentTestResult.Name &&
// string.Empty != TestData.CurrentTestResult.Name) ||
// (0 < TestData.CurrentTestResult.Details.Count)) {
// //TmxHelper.TestCaseStarted =
// // System.DateTime.Now;
// TestData.CurrentTestScenario.TestResults.Add(new TestResult(TestData.CurrentTestScenario.Id, TestData.CurrentTestSuite.Id));
// TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1] =
// TestData.CurrentTestResult;
// }
}
// set time spent on the previous scenario
if (null != CurrentTestScenario) {
if (DateTime.MinValue != CurrentTestScenario.Timestamp) {
CurrentTestScenario.SetTimeSpent(
CurrentTestScenario.TimeSpent +=
(DateTime.Now - CurrentTestScenario.Timestamp).TotalSeconds);
CurrentTestScenario.Timestamp = DateTime.MinValue;
}
}
if (testSuite != null) {
CurrentTestSuite = testSuite;
} else if (!string.IsNullOrEmpty(testSuiteName)) {
var testSuite2 = GetTestSuite(testSuiteName, testSuiteId, testPlatformId);
if (testSuite2 != null) {
CurrentTestSuite = testSuite2;
}
} else if (!string.IsNullOrEmpty(testSuiteId)) {
var testSuite3 = GetTestSuite(testSuiteName, testSuiteId, testPlatformId);
if (testSuite3 != null) {
CurrentTestSuite = testSuite3;
}
}
if (CurrentTestSuite == null) {
return result;
}
// 20140716
try {
// 20140716
// if (1 == TestData.CurrentTestSuite.TestScenarios.Count && "autogenerated" == TestData.CurrentTestSuite.TestScenarios[0].Name &&
// 20140718
// if (1 == TestData.CurrentTestSuite.TestScenarios.Count && TestData.Autogenerated == TestData.CurrentTestSuite.TestScenarios[0].Name &&
// 1 == TestData.CurrentTestSuite.TestScenarios[0].TestResults.Count && TestResultOrigins.Automatic == TestData.CurrentTestSuite.TestScenarios[0].TestResults[0].Origin) {
if (1 <= CurrentTestSuite.TestScenarios.Count && Autogenerated == CurrentTestSuite.TestScenarios[0].Name &&
(0 == CurrentTestSuite.TestScenarios[0].TestResults.Count ||
1 == CurrentTestSuite.TestScenarios[0].TestResults.Count && TestResultOrigins.Automatic == CurrentTestSuite.TestScenarios[0].TestResults[0].Origin)) {
CurrentTestSuite.TestScenarios.RemoveAt(0);
}
}
catch {}
if (string.IsNullOrEmpty(testScenarioId))
testScenarioId = GetTestScenarioId();
// if (null != TestData.TestSuites && 0 < TestData.TestSuites.Count) {
// int lastTestSuiteNumber = TestData.TestSuites.Count - 1;
//
// if (null != TestData.TestSuites[lastTestSuiteNumber].TestScenarios && 0 < TestData.TestSuites[lastTestSuiteNumber].TestScenarios.Count) {
// int lastTestScenarioNumber = TestData.TestSuites[lastTestSuiteNumber].TestScenarios.Count - 1;
//
// if (TestData.CurrentTestScenario.Name == TestData.TestSuites[lastTestSuiteNumber].TestScenarios[lastTestScenarioNumber].Name &&
// TestData.CurrentTestScenario.Id == TestData.TestSuites[lastTestSuiteNumber].TestScenarios[lastTestScenarioNumber].Id) {
//
// TestData.TestSuites[lastTestSuiteNumber].TestScenarios[lastTestScenarioNumber] = TestData.CurrentTestScenario;
// }
// }
// }
CurrentTestSuite.TestScenarios.Add(
new TestScenario(testScenarioName, testScenarioId, CurrentTestSuite.Id) { SuiteUniqueId = CurrentTestSuite.UniqueId });
if (!string.IsNullOrEmpty(testScenarioDescription))
CurrentTestSuite.TestScenarios[CurrentTestSuite.TestScenarios.Count - 1].Description = testScenarioDescription;
CurrentTestScenario =
(TestScenario)CurrentTestSuite.TestScenarios[CurrentTestSuite.TestScenarios.Count - 1];
CurrentTestScenario.BeforeTest = testScenarioBeforeTest;
CurrentTestScenario.AfterTest = testScenarioAfterTest;
CurrentTestScenario.PlatformUniqueId = testPlatformId != Guid.Empty ? testPlatformId : CurrentTestSuite.PlatformUniqueId;
CurrentTestScenario.PlatformId = TestPlatforms.First(tp => tp.UniqueId == CurrentTestScenario.PlatformUniqueId).Id;
// set the initial time for this scenario's session
CurrentTestScenario.SetNow();
OnTmxNewTestScenarioAdded(CurrentTestScenario, null);
if (Preferences.Storage) {
using (var session = StorageHelper.SessionFactory.OpenSession())
session.Save(CurrentTestScenario);
}
result = true;
return result;
}