public void Id()
 {
     var factories = Substitute.For<Factories>();
     var sugar = new Models.Sugar { Id = Guid.NewGuid() };
     var sut = new SugarViewModel(sugar, factories);
     Assert.AreEqual(sugar.Id, sut.Id);
 }
 public void DateTimeTest()
 {
     var factories = Substitute.For<Factories>();
     var sut = new SugarViewModel(new Models.Sugar(), factories);
     var universal = DateTime.UtcNow;
     sut.ChangesProperty("DateTime", () =>
     {
         sut.DateTime = universal;
     });
     Assert.AreEqual(universal.ToLocalTime(), sut.DateTime);
 }
 public void TestInitialize()
 {
     sut = new Sut();
     var sugar = new Sugar();
     var factories = Substitute.For<Factories>();
     sugarViewModel = new SugarViewModel(sugar, factories);
     var stateProvider = Substitute.For<StateProvider>();
     stateProvider.State.Returns(new Dictionary<string, object>());
     factories.Settings.Returns(new Settings());
     sut.StateProvider = stateProvider;
 }
 public void TextAndText2()
 {
     var factories = Substitute.For<Factories>();
     factories.Settings.Returns(new Settings());
     var sut = new SugarViewModel(new Models.Sugar { BloodSugar = 120 }, factories);
     Assert.AreEqual("120 mg/dL", sut.Text);
     factories.Settings.SugarUnit = SugarUnit.mmolL;
     sut.BloodSugar = "5.5";
     Assert.AreEqual(sut.BloodSugar + " mmol/L", sut.Text);
     Assert.IsEmpty(sut.Text2);
     sut.BloodSugar = "";
     Assert.AreEqual("", sut.Text);
     Assert.IsEmpty(sut.Text2);
 }
 public void BloodSugarWrapperDoesNotNotifyAboutItself()
 {
     // This behaviour is useful for entering decimal point numbers into fields with binding on each key press.
     var factories = Substitute.For<Factories>();
     factories.Settings.Returns(new Settings());
     var sut = new SugarViewModel(new Models.Sugar { BloodSugar = 100 }, factories);
     Assert.AreEqual(100.ToString(), sut.BloodSugarWrapper);
     sut.ChangesProperty("BloodSugar", () =>
     {
         sut.NotChangesProperty("BloodSugarWrapper", () =>
         {
             sut.BloodSugarWrapper = (100.10).ToString();
         });
     });
     Assert.AreEqual((100.10).ToString(), sut.BloodSugar);
     Assert.AreEqual((100.10).ToString(), sut.BloodSugarWrapper);
     sut.ChangesProperty("BloodSugarWrapper", () => sut.BloodSugar = 100.ToString());
 }
 public PatternViewModel(Pattern pattern, Factories factories,
     IList<InsulinCircumstanceViewModel> allCircumstances, bool hasAlternatives,
     IEnumerable<MealNameViewModel> names, MealNameViewModel defaultName, Navigator navigator, Action save,
     Action showAlternatives)
 {
     Pattern = pattern;
     Match = new MealItemViewModel(pattern.Match, factories);
     From = new MealViewModel(pattern.From, factories);
     From.Names = names;
     From.DefaultName = defaultName;
     Insulin = new InsulinViewModel(pattern.Insulin, factories, allCircumstances: allCircumstances);
     Before = new SugarViewModel(pattern.Before, factories);
     After = pattern.After
         .Select(sugar => new SugarViewModel(sugar, factories))
         .ToList();
     For = new MealItemViewModel(pattern.For, factories);
     HasAlternatives = hasAlternatives;
     this.navigator = navigator;
     this.save = save;
     this.showAlternatives = showAlternatives;
 }
 public void ChooseWhenSugar()
 {
     var sugar = new Sugar { BloodSugar = 100 };
     var viewModel = new SugarViewModel(sugar, factories);
     sut.Choose(viewModel);
     sugarEditing.Received().Show(Arg.Is<SugarViewModel>(vm => "100" == vm.BloodSugar));
 }
 public void ChooseCreatesACopyOfSugar()
 {
     var sugar = new Sugar { BloodSugar = 100 };
     var viewModel = new SugarViewModel(sugar, factories);
     sut.Choose(viewModel);
     sugarEditing.Subject.BloodSugar = "110";
     Assert.AreEqual(100, sugar.BloodSugar);
 }
 public void ChooseAndSugarEditingDelete()
 {
     var sugar = new Sugar();
     factories.Sugars.Add(sugar);
     sut.Load();
     var viewModel = new SugarViewModel(sugar, factories);
     sut.Choose(viewModel);
     Assert.IsTrue(sugarEditing.CanDelete);
     sugarEditing.Delete.Call();
     Assert.IsEmpty(factories.Sugars);
     Assert.IsEmpty(sut.Items);
 }
 public void Choose(JournalItemViewModel vm)
 {
     if (vm is SugarViewModel)
     {
         editedSugar = (vm as SugarViewModel).Sugar;
         var sugarCopy = editedSugar.GetCopy();
         editedSugarViewModel = new SugarViewModel(sugarCopy, this.factories);
         sugarEditing.Show(editedSugarViewModel);
     }
     else
         vm.Choose(Navigator);
     choosedAnAdded = false;
 }
 public void ChooseAndSugarEditingConfirm()
 {
     var sugar = new Sugar { BloodSugar = 100 };
     factories.Sugars.Add(sugar);
     sut.Load();
     var items = sut.Items.ToList();
     var viewModel = new SugarViewModel(sugar, factories);
     sut.Choose(viewModel);
     sugarEditing.Subject.BloodSugar = "110";
     sugarEditing.Confirm.Call();
     Assert.AreEqual(110, sugar.BloodSugar);
     Assert.AreNotEqual(items, sut.Items, "Should refresh");
 }
 public void WhenCurrentSugarSetToOutsideConstainsTheValueIsConstrained(
     string enteredValue, SugarUnit sugarUnit, string expectedValue)
 {
     var factories = Substitute.For<Factories>();
     var settings = new Settings { SugarUnit = sugarUnit };
     factories.Settings.Returns(settings);
     var sut = new SugarViewModel(new Models.Sugar(), factories);
     sut.BloodSugar = enteredValue;
     Assert.AreEqual(expectedValue, sut.BloodSugar);
 }
 public void WhenBloodSugarSet_ReturnsItsValue()
 {
     var factories = Substitute.For<Factories>();
     factories.Settings.Returns(new Settings());
     var sut = new SugarViewModel(new Models.Sugar(), factories);
     sut.BloodSugar = (100.10).ToString();
     Assert.AreEqual((100.10).ToString(), sut.BloodSugar);
 }
 public void DateFormat()
 {
     var factories = Substitute.For<Factories>();
     var sut = new SugarViewModel(new Models.Sugar(), factories);
     Assert.IsTrue(sut.DateFormat.Contains("yy"));
 }
 public void TombstoneAndUntombstoneWhenSugarEditing()
 {
     var sugar = new Sugar { DateTime = DateTime.Now };
     factories.Sugars.Add(sugar);
     var viewModel = new SugarViewModel(sugar, factories);
     sut.Load();
     sut.Choose(viewModel);
     viewModel.BloodSugar = "100";
     sut.Tombstone();
     sugarEditing.Cancel.Call();
     sut.Untombstone();
     Assert.IsTrue(sugarEditing.IsVisible);
     sugarEditing.Confirm.Call();
     Assert.AreEqual(100, sugar.BloodSugar);
 }
 public void ChooseAndSugarEditingCancel()
 {
     var sugar = new Sugar();
     factories.Sugars.Add(sugar);
     sut.Load();
     var viewModel = new SugarViewModel(sugar, factories);
     sut.Choose(viewModel);
     sugarEditing.Cancel.Call();
     Assert.IsNotEmpty(factories.Sugars);
     Assert.IsNotEmpty(sut.Items);
 }
 public override void Execute(SubViewModel subViewModel)
 {
     var viewModel = subViewModel as JournalViewModel;
     var sugar = viewModel.factories.CreateSugar();
     var sugarViewModel = new SugarViewModel(sugar, viewModel.factories);
     viewModel.ChooseAnAdded(sugarViewModel);
     viewModel.Refresh();
 }
 public void TestInitialize()
 {
     insulin = new InsulinViewModel(new Insulin(), Substitute.For<Factories>(), null);
     sugar = new SugarViewModel(new Sugar(), Substitute.For<Factories>());
     meal = new MealViewModel(new Meal(), Substitute.For<Factories>());
 }
 private void LoadUnsortedSugars()
 {
     var models = factories.Sugars;
     unsortedSugars = new List<SugarViewModel>();
     foreach (var model in models)
     {
         var viewModel = new SugarViewModel(model, factories);
         unsortedSugars.Add(viewModel);
     }
 }