private static bool UpdateTestCase(ITestBase testCase, ScenarioDefinition scenarioDefinition, string hash, IEnumerable <TestCaseField> fieldsCollection) { testCase.Refresh(); var currentState = testCase.State; if (currentState.Equals(SyncUtil.RemovedState, StringComparison.InvariantCulture) || currentState.Equals(SyncUtil.ClosedState, StringComparison.InvariantCulture)) { Logger.Info(ResourceStrings.DECORATION, $"{testCase.Id} is {currentState}"); return(false); } var scenarioTags = GherkinUtils.GetTags(scenarioDefinition); var removedTag = scenarioTags.FirstOrDefault( scenarioTag => scenarioTag.Name.Trim().ToUpperInvariant().StartsWith( SyncUtil.RemovedTag, StringComparison.InvariantCulture)); if (removedTag != null) { testCase.State = SyncUtil.RemovedState; SaveTestCase(testCase); Logger.Info(ResourceStrings.DECORATION, $"{testCase.Id} is marked removed"); return(false); } var currentVersion = testCase.WorkItem.Fields[SyncUtil.VersionField].Value .ToString(); var isTestCaseDetailsChanged = TestCaseHelper.UpdateTestCaseDetails( scenarioDefinition, testCase); var isTestCaseFieldsChanged = TestCaseHelper.UpdateTestcaseFields( scenarioTags, testCase, fieldsCollection); var scenarioStepsUptoDate = VersionUtils.IsUptoDate(hash, currentVersion); if (isTestCaseDetailsChanged || isTestCaseFieldsChanged || !scenarioStepsUptoDate) { return(true); } Logger.Info(ResourceStrings.DECORATION, $"{scenarioDefinition.Name}<{testCase.Id}> is uptodate"); return(false); }