Tmx.TestData.AddTestResult C# (CSharp) Method

AddTestResult() static private method

static private AddTestResult ( string closingTestResultName, string closingTestResultId, bool passed, bool isKnownIssue, bool generateNextResult, Exception error, string testResultDescription, TestResultOrigins origin, bool skipAutomatic ) : void
closingTestResultName string
closingTestResultId string
passed bool
isKnownIssue bool
generateNextResult bool
error System.Exception
testResultDescription string
origin TestResultOrigins
skipAutomatic bool
return void
        internal static void AddTestResult(string closingTestResultName, // previousTestResultName
                                           string closingTestResultId, // previousTestResultId
                                           bool? passed,
                                           bool isKnownIssue,
                                           bool generateNextResult,
                                           // 20160116
                                           // InvocationInfo myInvocation,
                                           // ErrorRecord error,
                                           Exception error,
                                           string testResultDescription,
                                           TestResultOrigins origin,
                                           bool skipAutomatic)
        {
            //TestData.InitCurrentTestScenario();
            
            bool generated = TestResultOrigins.Automatic == origin;
            
            ITestResult currentTestResult;
            if (null != CurrentTestResult) {
                currentTestResult = CurrentTestResult;
            } else {
                // 20141204
//                currentTestResult =
//                    new TestResult(
//                        TestData.CurrentTestScenario.Id,
//                        TestData.CurrentTestSuite.Id);
                currentTestResult =
                    new TestResult(
                        CurrentTestScenario.Id,
                        CurrentTestSuite.Id) {
                    SuiteUniqueId = CurrentTestSuite.UniqueId,
                    ScenarioUniqueId = CurrentTestScenario.UniqueId
                };
            }
            
            if (string.IsNullOrEmpty(currentTestResult.Name)) {
                
//                if (closingTestResultName != null &&
//                    closingTestResultName != string.Empty &&
//                    closingTestResultName.Length > 0 &&
//                    TestData.CurrentTestResult != null && 
//                     closingTestResultName != TestData.CurrentTestResult.Name) {

                if (!string.IsNullOrEmpty(closingTestResultName) &&
                    ((CurrentTestResult != null && 
                      closingTestResultName != CurrentTestResult.Name) ||
                      null == CurrentTestResult)) {
                    
                    currentTestResult.Name = closingTestResultName;
                } else {
                    currentTestResult.Name = Tmx_Core_Resources.TestData_AddTestResult_generated_test_result_name;
                }
                
            } else {
                // the current test result is a result that was preset
                // nothing to do
            }

            // setting test result's origin
            //if (generated)
            //    currentTestResult.SetOrigin(TestResultOrigins.Automatic);
            //else
            //    currentTestResult.SetOrigin(origin);
            currentTestResult.SetOrigin(generated ? TestResultOrigins.Automatic : origin);

            if (string.IsNullOrEmpty(currentTestResult.Id)) {
                
                if (!string.IsNullOrEmpty(closingTestResultId) &&
                    ((null != CurrentTestResult &&
                    closingTestResultId != CurrentTestResult.Id) ||
                    null == CurrentTestResult))
                    currentTestResult.Id = closingTestResultId;
                else
                    currentTestResult.Id = GetTestResultId();
            } else {
                // there already was the Id
                // nothing to do
            }
            
            if (passed != null) {
                if ((bool)passed) {
                    currentTestResult.enStatus = TestStatuses.Passed;
                } else {
                    currentTestResult.enStatus = TestStatuses.Failed;
                }

                if (isKnownIssue) {
                    currentTestResult.enStatus = TestStatuses.KnownIssue;
                }
            } else {
                //currentTestResult.enStatus = TestResultStatuses.NotTested;
                
                // if there were no errors during the test case execution
                // it is marked as passed
                bool noErrors = true;
                if (null == currentTestResult.Error &&
                    TestStatuses.Failed != currentTestResult.enStatus &&
                    TestStatuses.KnownIssue != currentTestResult.enStatus) {
                    
                    //foreach (ITestResultDetail detail in currentTestResult.Details) {
                    //    if (null == ((TestResultDetail)detail).ErrorDetail) {
                    //        noErrors = false;
                    //        break;
                    //    }
                    //}
                    if (currentTestResult.Details.Any(detail => null == ((TestResultDetail) detail).ErrorDetail))
                        noErrors = false;
                }
                
                if (noErrors && null != passed) {
                    currentTestResult.enStatus = TestStatuses.Passed;
                }

            }
            
            if (!string.IsNullOrEmpty(testResultDescription)) {
                currentTestResult.Description = testResultDescription;
            }
            
            if (generated)
                currentTestResult.SetGenerated();
            
            if (TmxHelper.TestCaseStarted == DateTime.MinValue)
                TmxHelper.TestCaseStarted = DateTime.Now;

            currentTestResult.SetNow();
            currentTestResult.SetTimeSpent(
                (currentTestResult.Timestamp - TmxHelper.TestCaseStarted).TotalSeconds);
            
            CurrentTestResult = currentTestResult;
            
            try {
                CurrentTestResult.PlatformUniqueId = CurrentTestScenario.PlatformUniqueId;
                CurrentTestResult.PlatformId = CurrentTestScenario.PlatformId;
                // 20141204
                CurrentTestResult.SuiteUniqueId = CurrentTestSuite.UniqueId;
                CurrentTestResult.ScenarioUniqueId = CurrentTestScenario.UniqueId;
            }
            catch {}
            
            if (null != CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1] &&
                TestResultOrigins.Logical == CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1].Origin &&
                CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1] != CurrentTestResult &&
                !string.IsNullOrEmpty(CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1].Name)) {
                
                TmxHelper.TestCaseStarted = DateTime.Now;
                // 20141204
                // TestData.CurrentTestScenario.TestResults.Add(new TestResult(TestData.CurrentTestScenario.Id, TestData.CurrentTestSuite.Id));
                CurrentTestScenario.TestResults.Add(new TestResult(CurrentTestScenario.Id, CurrentTestSuite.Id) {
                                                                 SuiteUniqueId = CurrentTestSuite.UniqueId,
                                                                 ScenarioUniqueId = CurrentTestScenario.UniqueId
                                                             });
            }

            /*
            if (null != TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1] &&
                TestResultOrigins.Logical == TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1].Origin &&
                TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1] != TestData.CurrentTestResult &&
                null != TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1].Name &&
                0 < TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1].Name.Length) {
                
                TmxHelper.TestCaseStarted =
                    System.DateTime.Now;
                TestData.CurrentTestScenario.TestResults.Add(new TestResult(TestData.CurrentTestScenario.Id, TestData.CurrentTestSuite.Id));
               
            }
            */

            CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1] = 
                CurrentTestResult;
            
            #region Test Result's PowerShell data
            // 20160116
            /*
            if (myInvocation != null) {
                TestData.CurrentTestResult.SetScriptName(TmxHelper.GetScriptName(myInvocation));
                TestData.CurrentTestResult.SetLineNumber(TmxHelper.GetScriptLineNumber(myInvocation));
                TestData.CurrentTestResult.SetPosition(TmxHelper.GetPipelinePosition(myInvocation));
                // 20130329
                try {
                    
                    if (((bool)passed && Preferences.LogScriptName_Passed) || (!(bool)passed && Preferences.LogScriptName_Failed)) {
                        
                        TestData.CurrentTestResult.Code += 
                            "script name: " + 
                            TestData.CurrentTestResult.ScriptName;
    
                    }
                }
                catch {}
                try {
                    
                    if (((bool)passed && Preferences.LogLineNumber_Passed) || (!(bool)passed && Preferences.LogLineNumber_Failed)) {
                        
                        TestData.CurrentTestResult.Code +=
                            "\r\nline number: " +
                            TestData.CurrentTestResult.LineNumber.ToString();
    
                    }
                }
                catch {}
                try {
                    
                    if (((bool)passed && Preferences.LogCode_Passed) || (!(bool)passed && Preferences.LogCode_Failed)) {
                        
                        TestData.CurrentTestResult.Code +=
                            "\r\ncode:\r\n" +
                            myInvocation.Line;
    
                    }
                }
                catch {}
            }
            
            if (error != null) {
                // 20150116
                // TestData.CurrentTestResult.SetError(error);
                TestData.CurrentTestResult.SetError(error.Exception);
            }
            */
            #endregion Test Result's PowerShell data
            
            var sourceTestResult = CurrentTestResult;
            SetScenarioStatus(skipAutomatic);
            SetSuiteStatus(skipAutomatic);
            
            if (generateNextResult) {
                // write current time
                TmxHelper.TestCaseStarted = DateTime.Now;
                CurrentTestScenario.TestResults.Add(
                    new TestResult(
                       CurrentTestScenario.Id,
                       CurrentTestScenario.SuiteId) { SuiteUniqueId = CurrentTestScenario.SuiteUniqueId, ScenarioUniqueId = CurrentTestScenario.UniqueId });
                CurrentTestResult = 
                    CurrentTestScenario.TestResults[CurrentTestScenario.TestResults.Count - 1];
            } else {
                // write zero time
                TmxHelper.TestCaseStarted = DateTime.MinValue;
                CurrentTestResult = null;
            }
            
            if (Preferences.Storage) {
                using (var session = StorageHelper.SessionFactory.OpenSession())
                {
                    session.Save(CurrentTestResult);
                }
            }

            OnTmxNewTestResultClosed(sourceTestResult, null);
        }