Tmx.TestData.AddTestScenario C# (CSharp) Method

AddTestScenario() static private method

static private AddTestScenario ( ITestSuite testSuite, string testScenarioName, string testScenarioId, string testScenarioDescription, string testSuiteName, string testSuiteId, System.Guid testPlatformId, ICodeBlock testScenarioBeforeTest, ICodeBlock testScenarioAfterTest ) : bool
testSuite ITestSuite
testScenarioName string
testScenarioId string
testScenarioDescription string
testSuiteName string
testSuiteId string
testPlatformId System.Guid
testScenarioBeforeTest ICodeBlock
testScenarioAfterTest ICodeBlock
return bool
        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;
        }