/* SettingsViewModelTest.cs * part of zaaReloaded2 * * Copyright 2015 Daniel Kraus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using NUnit.Framework; using zaaReloaded2.ViewModels; using zaaReloaded2.Controller; using zaaReloaded2.Controller.Elements; namespace Tests.ViewModels { [TestFixture] class SettingsViewModelTest { SettingsViewModel _settingsVM; [SetUp] public void SetUp() { _settingsVM = new SettingsViewModel(); } [Test] public void AddElement() { bool messageSent = false; Settings model = _settingsVM.RevealModelObject() as Settings; int oldViewModelElementCount = _settingsVM.Elements.Count; int oldModelElementCount = model.Elements.Count; _settingsVM.AddElementMessage.Sent += (sender, args) => { messageSent = true; ElementPickerViewModel picker = args.Content.ViewModel as ElementPickerViewModel; Assert.IsNotNull(picker, "ViewModel in MessageContent is not an ElementPickerViewModel"); picker.Categories.First().Children.First().IsSelected = true; picker.ChooseElementCommand.Execute(null); }; _settingsVM.AddElementCommand.Execute(null); Assert.IsTrue(messageSent, "Message was not sent"); Assert.AreEqual(oldViewModelElementCount + 1, _settingsVM.Elements.Count, "Count of elements in ViewModel was not increased by 1"); Assert.AreEqual(oldModelElementCount + 1, model.Elements.Count, "Count of elements in settings Model was not increased by 1"); } [Test] public void AddChildElement() { bool messageSent = false; SelectEachDay model = new SelectEachDay(); ControlElementViewModel viewModel = new ControlElementViewModel(model); _settingsVM.AddElementViewModel(viewModel); viewModel.IsSelected = true; int oldViewModelChildrenCount = viewModel.Elements.Count; int oldModelChildrenCount = model.FormatElements.Count; _settingsVM.AddChildElementMessage.Sent += (sender, args) => { messageSent = true; ElementPickerViewModel picker = args.Content.ViewModel as ElementPickerViewModel; Assert.IsNotNull(picker, "ViewModel in MessageContent is not an ElementPickerViewModel"); picker.Categories.First().Children.First().IsSelected = true; Assert.IsTrue(picker.ChooseElementCommand.CanExecute(null), "Cannot execute element picker's ChooseElementCommand."); picker.ChooseElementCommand.Execute(null); }; _settingsVM.AddChildElementCommand.Execute(null); Assert.IsTrue(messageSent, "Message was not sent"); Assert.AreEqual(oldViewModelChildrenCount + 1, viewModel.Elements.Count, "Count of children in ViewModel was not increased by 1"); Assert.AreEqual(oldModelChildrenCount + 1, model.FormatElements.Count, "Count of children in Model was not increased by 1"); } [Test] public void CannotAddChildElementToFormatElement() { ControlElementViewModel parent = new ControlElementViewModel( new SelectFirstDay()); _settingsVM.AddElementViewModel(parent); parent.IsSelected = true; Assert.IsTrue(_settingsVM.AddChildElementCommand.CanExecute(null)); FormatElementViewModel child = new FormatElementViewModel(new Items()); _settingsVM.AddChildElementViewModel(parent, child); parent.IsSelected = false; child.IsSelected = true; Assert.IsFalse(_settingsVM.AddChildElementCommand.CanExecute(null)); } [Test] public void DeleteElement() { throw new NotImplementedException(); } [Test] public void CopyElement() { throw new NotImplementedException(); } } }