public void CheckAllRegions_AllRegions_OverallResultUnionsActionResultDicts()
            {
                _tabSwitchSettingsCheck = new TabSwitchSettingsCheck(null, _settingsNavigationChecks);

                var overallResult = _tabSwitchSettingsCheck.CheckAllSettings();

                Assert.IsFalse(overallResult.Result);
                Assert.AreEqual(4, overallResult.Result.Count);

                Assert.Contains(RegionNoChangesNoErrors, overallResult.Result.Keys);
                Assert.AreEqual(overallResult.Result[RegionNoChangesNoErrors], _actionResultDictNoChangesNoErrors[RegionNoChangesNoErrors]);
                overallResult.Result.Remove(RegionNoChangesNoErrors);

                Assert.Contains(RegionWithChangesNoErrors, overallResult.Result.Keys);
                Assert.AreEqual(overallResult.Result[RegionWithChangesNoErrors], _actionResultDictWithChangesNoErrors[RegionWithChangesNoErrors]);
                overallResult.Result.Remove(RegionWithChangesNoErrors);

                Assert.Contains(RegionNoChangesWithErrors, overallResult.Result.Keys);
                Assert.AreEqual(overallResult.Result[RegionNoChangesWithErrors], _actionResultDictNoChangesWithErrors[RegionNoChangesWithErrors]);
                overallResult.Result.Remove(RegionNoChangesWithErrors);

                Assert.Contains(RegionWithChangesWithErrors, overallResult.Result.Keys);
                Assert.AreEqual(overallResult.Result[RegionWithChangesWithErrors], _actionResultDictWithChangesWithErrors[RegionWithChangesWithErrors]);
                overallResult.Result.Remove(RegionWithChangesWithErrors);

                Assert.IsEmpty(overallResult.Result, "Overall result contains unexcpeted ActionResultDicts");
            }
            public void CheckAllRegions_OneRegionWithChanges_OverallResultHasChanges()
            {
                _settingsNavigationChecks = new[] { _regionCheckWithChangesNoErrors, _regionCheckNoChangesNoErrors, _regionCheckNoChangesWithErrors };
                _tabSwitchSettingsCheck   = new TabSwitchSettingsCheck(null, _settingsNavigationChecks);

                var overallResult = _tabSwitchSettingsCheck.CheckAllSettings();

                Assert.IsTrue(overallResult.SettingsHaveChanged);
            }
            public void CheckAllRegions_RegionDuplicates_OverallReusltContainsActionResultsOnlyOnceAndRegionsOnlyOnce()
            {
                _settingsNavigationChecks = new[]
                {
                    _regionCheckNoChangesWithErrors, _regionCheckNoChangesWithErrors, _regionCheckNoChangesWithErrors,
                    _regionCheckWithChangesWithErrors, _regionCheckWithChangesWithErrors, _regionCheckWithChangesWithErrors
                };
                _tabSwitchSettingsCheck = new TabSwitchSettingsCheck(null, _settingsNavigationChecks);

                var overallResult = _tabSwitchSettingsCheck.CheckAllSettings();

                Assert.AreEqual(2, overallResult.Result.Count);
                Assert.Contains(RegionNoChangesWithErrors, overallResult.Result.Keys);
                var actionResult = overallResult.Result[RegionNoChangesWithErrors];

                Assert.AreEqual(1, actionResult.Count);
            }
            public void CheckAllRegions_NoRegionsWithErrors_OverallResultMergesToValidResult()
            {
                _settingsNavigationChecks = new[] { _regionCheckWithChangesNoErrors, _regionCheckNoChangesNoErrors };
                _tabSwitchSettingsCheck   = new TabSwitchSettingsCheck(null, _settingsNavigationChecks);

                var overallResult = _tabSwitchSettingsCheck.CheckAllSettings();

                Assert.IsTrue(overallResult.Result);
                Assert.AreEqual(2, overallResult.Result.Count);

                Assert.Contains(RegionWithChangesNoErrors, overallResult.Result.Keys);
                Assert.AreEqual(overallResult.Result[RegionWithChangesNoErrors], _actionResultDictWithChangesNoErrors[RegionWithChangesNoErrors]);
                overallResult.Result.Remove(RegionWithChangesNoErrors);

                Assert.Contains(RegionNoChangesNoErrors, overallResult.Result.Keys);
                Assert.AreEqual(overallResult.Result[RegionNoChangesNoErrors], _actionResultDictNoChangesNoErrors[RegionNoChangesNoErrors]);
                overallResult.Result.Remove(RegionNoChangesNoErrors);

                Assert.IsEmpty(overallResult.Result, "Overall result contains unexcpeted ActionResultDicts");
            }
            public void SetUp()
            {
                _regionHelper = Substitute.For <IRegionHelper>();

                _regionCheckNoChangesNoErrors = Substitute.For <ISettingsNavigationCheck>();
                _regionCheckNoChangesNoErrors.IsRelevantForRegion(RegionNoChangesNoErrors).Returns(true);
                _regionCheckNoChangesNoErrors.CheckSettings().Returns(new SettingsCheckResult(_actionResultDictNoChangesNoErrors, false));

                _regionCheckWithChangesNoErrors = Substitute.For <ISettingsNavigationCheck>();
                _regionCheckWithChangesNoErrors.IsRelevantForRegion(RegionWithChangesNoErrors).Returns(true);
                _regionCheckWithChangesNoErrors.CheckSettings().Returns(new SettingsCheckResult(_actionResultDictWithChangesNoErrors, true));

                _regionCheckNoChangesWithErrors = Substitute.For <ISettingsNavigationCheck>();
                _regionCheckNoChangesWithErrors.IsRelevantForRegion(RegionNoChangesWithErrors).Returns(true);
                _regionCheckNoChangesWithErrors.CheckSettings().Returns(new SettingsCheckResult(_actionResultDictNoChangesWithErrors, false));

                _regionCheckWithChangesWithErrors = Substitute.For <ISettingsNavigationCheck>();
                _regionCheckWithChangesWithErrors.IsRelevantForRegion(RegionWithChangesWithErrors).Returns(true);
                _regionCheckWithChangesWithErrors.CheckSettings().Returns(new SettingsCheckResult(_actionResultDictWithChangesWithErrors, true));

                _settingsNavigationChecks = new[] { _regionCheckNoChangesNoErrors, _regionCheckWithChangesNoErrors, _regionCheckNoChangesWithErrors, _regionCheckWithChangesWithErrors };

                _tabSwitchSettingsCheck = new TabSwitchSettingsCheck(_regionHelper, _settingsNavigationChecks);
            }