public void AfterGaugeChanges_StateIndicatorAngleShouldBeUpdated()
        {
            var kpiUp = Mock.Create<IKpi>();
            Mock.Arrange(() => kpiUp.FavorableDirection).Returns(FavorableDirections.Up);

            var kpiDown = Mock.Create<IKpi>();
            Mock.Arrange(() => kpiDown.FavorableDirection).Returns(FavorableDirections.Down);

            var dynamicManager = Mock.Create<IDynamicTypeManager>();
            Mock.Arrange(() => dynamicManager.GetKpiInfoType(Arg.AnyString)).Returns(typeof(object));

            var gadget = new ProcessKpiGaugeGadgetViewModel() { TheDynamicTypeManager = dynamicManager };
            gadget.KPIs.Add(kpiUp);
            gadget.KPIs.Add(kpiDown);
            gadget.SelectedKPI = kpiUp;

            var vm = new ProcessKpiGaugeGadgetTabViewModel { Parent = gadget };

            // Act
            vm.IsSelected = true;

            // Assert
            Assert.AreEqual(vm.StateIndicatorAngle, 0);

            // Arrange
            gadget.SelectedKPI = kpiDown;

            // Act
            vm.IsSelected = true;

            // Assert
            Assert.AreEqual(vm.StateIndicatorAngle, 180);
        }
        public void ProcessKpiGaugeGadgetViewModelConstructorTests()
        {
            var vm = new ProcessKpiGaugeGadgetViewModel();

            Assert.IsTrue(vm.AutoSaveProperties.Contains("SelectedKPI"));

            Assert.IsFalse(vm.AutoSaveProperties.Contains("NonExistentProperty"));
        }
        public void SaveSettingsExecuteTests()
        {
            var vm = new ProcessKpiGaugeGadgetViewModel();

            var saveWasFired = false;

            Mock.NonPublic.Arrange(vm, "RaisePropertyChanged", ArgExpr.IsAny<string>()).CallOriginal();

            vm.RequestSave += (o, e) =>
            {
                saveWasFired = true;
            };

            EnqueueConditional(() => saveWasFired);
            EnqueueCallback(() => Assert.IsTrue(saveWasFired));

            vm.SelectedKPI = new Kpi(1, "metric", Guid.NewGuid(), FavorableDirections.Up, 0.00, 1.00, string.Empty, null, 0.50, string.Empty, null, string.Empty, null, Guid.NewGuid(), string.Empty);
            Mock.NonPublic.Assert(vm, "RaisePropertyChanged", Occurs.AtLeast(1), ArgExpr.IsAny<string>());

            EnqueueTestComplete();
        }
        //[Ignore]
        public void LoadSettingsExecuteTests()
        {
            var kpiGuid = Guid.NewGuid();

            var vm = new ProcessKpiGaugeGadgetViewModel
                         {
                             PublishedProcessFactory = null,
                             TheDynamicTypeManager = Mock.Create<IDynamicTypeManager>(Behavior.Loose),
                             TabsFactory = new List<ExportFactory<IGadgetTabViewModel, IExportAsGadgetTabViewModelAttributeMetadata>>(),
                             TheEventAggregator = Mock.Create<IEventAggregator>(Behavior.Loose)
                         };

            vm.KPIs.Add(new Kpi(1, "kpi", kpiGuid, FavorableDirections.Up, 0.00, 1.00, string.Empty, null, 0.50, string.Empty, null, string.Empty, null, Guid.NewGuid(), string.Empty));

            var settings = new Dictionary<string, string> { { "SelectedKPI", kpiGuid.ToString() } };

            // act
            vm.Init(new Gadget(), Guid.NewGuid(), "name", settings);

            // assert
            Assert.AreEqual(kpiGuid, vm.SelectedKPI.Guid);
        }
        public void NotifyPropertyChangedTests()
        {
            var vm = new ProcessKpiGaugeGadgetViewModel();

            TestsHelper.TestPropertyWithNotifyPropertyChanged(vm, () => vm.SelectedKPI);
        }
        public void KpiGaugeGadgetMustHaveDescriptionLabel()
        {
            // arrange
            var vm = new ProcessKpiGaugeGadgetViewModel();

            // act
            vm.SelectedKPI = new Kpi(1, "Our KPI Name", Guid.NewGuid(), FavorableDirections.Up, 1.0, 1.0, string.Empty, 1, 1.0, string.Empty, 1, string.Empty, 1, Guid.NewGuid(), string.Empty);

            // assert
            Assert.AreEqual("Our KPI Name", vm.ItemName);
        }