diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs index 598a8c25b3085ade04c0c92197e38833bdf25a82..240f3f990b1f93fef5106ee7cdaac83c66411db4 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using System.Runtime.InteropServices; using System.Text; using System.Windows; using System.Windows.Input; @@ -59,6 +60,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation AirDragViewModel = _dependencies.ComponentViewModelFactory.CreateComponentViewModel(airdragInputData) as IAirDragViewModel; if (AirDragViewModel != null) { AirDragViewModel.LabelVisible = false; + AirDragViewModel.IsReadOnly = true; } } @@ -123,6 +125,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation var airDragInputData = _dependencies.InjectFactory.CreateAirdragData(dataProviderVersion, null, airdragNode, fileName); AirDragViewModel = _dependencies.ComponentViewModelFactory.CreateComponentViewModel(airDragInputData) as IAirDragViewModel; + AirDragViewModel.IsReadOnly = true; + AirDragViewModel.LabelVisible = false; success = true; } else { success = false; diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs index 473d10565ec9ad67c86756b790c8ac8beea4a485..597ff589bb53e646e342dbbf035f2a4b849f538e 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs @@ -31,9 +31,14 @@ using XmlDocumentType = TUGraz.VectoCore.Utils.XmlDocumentType; namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { - //AGGREGATE MULTISTAGEDEPENDENCIES - public class MultiStageJobViewModel_v0_1 : ViewModelBase, IMultiStageJobViewModel, IMultistageVIFInputData, IMultistageBusInputDataProvider + public interface IMultiStageJobViewModel : IDeclarationMultistageJobInputData, IMultistageVIFInputData, IMultistageBusInputDataProvider + { + IManufacturingStageViewModel ManufacturingStageViewModel { get; } + } + + + public class MultiStageJobViewModel_v0_1 : ViewModelBase, IMultiStageJobViewModel { private IDeclarationMultistageJobInputData _jobInputData; @@ -51,6 +56,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation set => SetProperty(ref _manufacturingStageViewModel, value); } + #region Commands private ICommand _saveVifCommand; @@ -59,16 +65,16 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation get { return _saveVifCommand ?? new RelayCommand(() => { - var outPutFile = _multistageDependencies.DialogHelperLazy.Value.SaveToXMLDialog(Settings.Default.DefaultFilePath); - if (outPutFile == null) { + var outputFile = _multistageDependencies.DialogHelperLazy.Value.SaveToXMLDialog(Settings.Default.DefaultFilePath); + if (outputFile == null) { return; } - SaveVIF(this, outPutFile); + SaveVif(this, outputFile); }, () => true); } } - private static void SaveVIF(IMultistageVIFInputData vifData, string outputFile) + public static void SaveVif(IMultistageVIFInputData vifData, string outputFile) { @@ -149,10 +155,11 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } if (!valid) { _dialogHelper.Value.ShowMessageBox($"Invalid Document: {validator.ValidationError}", "Error"); - xDoc.Save(filename, SaveOptions.OmitDuplicateNamespaces); - LoadVehicleData(filename); + //xDoc.Save(filename, SaveOptions.OmitDuplicateNamespaces); + //LoadVehicleData(filename); } else { xDoc.Save(filename, SaveOptions.OmitDuplicateNamespaces); + LoadVehicleData(filename); } } @@ -290,8 +297,5 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation #endregion } - public interface IMultiStageJobViewModel : IDeclarationMultistageJobInputData - { - IManufacturingStageViewModel ManufacturingStageViewModel { get; } - } + } \ No newline at end of file diff --git a/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml b/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml index 6fa79fa6bb9259cc1a236f120a4c88300343b536..3eb4584508a506adcebea3e1751586bf590a7697 100644 --- a/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml +++ b/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml @@ -28,12 +28,15 @@ Text="{Binding AirdragFilePath, TargetNullValue=Select Airdrag Input Data}" Command="{Binding LoadAirdragFileCommand}"/> </DockPanel> - - <StackPanel HorizontalAlignment="Stretch" Margin="4" Visibility="{Binding ConsolidatedAirdragData, Converter={StaticResource NullToVisibilityConverter}}"> - <Label Style="{DynamicResource LabelStyle1}">Consolidated Airdrag Data</Label> - <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.Manufacturer, Mode=OneWay}" ReadOnly="True"/> - <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.Model, Mode=OneWay}" ReadOnly="True"/> - <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.AirDragArea, Mode=OneWay}" ReadOnly="True"/> + + <StackPanel HorizontalAlignment="Stretch" Margin="4" > + + <StackPanel Visibility="{Binding ConsolidatedAirdragData, Converter={StaticResource NullToVisibilityConverter}}"> + <Label Style="{DynamicResource LabelStyle1}">Consolidated Airdrag Data</Label> + <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.Manufacturer, Mode=OneWay}" ReadOnly="True"/> + <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.Model, Mode=OneWay}" ReadOnly="True"/> + <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.AirDragArea, Mode=OneWay}" ReadOnly="True"/> + </StackPanel> <Label Style="{DynamicResource LabelStyle1}">Data from File</Label> <ContentControl Content="{Binding AirDragViewModel}" Visibility="{Binding AirDragViewModel, Converter={StaticResource NullToVisibilityConverter}}"> diff --git a/Vecto3GUI2020Test/UI/DesktopSession.cs b/Vecto3GUI2020Test/UI/DesktopSession.cs index 45e09d63eca3cce890187e8beccce1157f0e5e4d..d71ebdb97973fcb2f1a3d58f490d86c721289fce 100644 --- a/Vecto3GUI2020Test/UI/DesktopSession.cs +++ b/Vecto3GUI2020Test/UI/DesktopSession.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -16,6 +17,8 @@ namespace Vecto3GUI2020Test public DesktopSession() { + var process = Process.Start(@"C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe"); + var appCapabilities = new AppiumOptions(); appCapabilities.AddAdditionalCapability("app", "Root"); appCapabilities.AddAdditionalCapability("deviceName", "WindowsPC"); diff --git a/Vecto3GUI2020Test/UI/UITests.cs b/Vecto3GUI2020Test/UI/UITests.cs index 785fadf49d36f65a0958416fea3a2743dbc3db8b..1d11d583737730319fc3f46977df4e30c3ad18c2 100644 --- a/Vecto3GUI2020Test/UI/UITests.cs +++ b/Vecto3GUI2020Test/UI/UITests.cs @@ -24,25 +24,48 @@ namespace Vecto3GUI2020Test Setup(TestContext.CurrentContext); } + + [Test] + public void LoadFileSession() + { + session.FindElementByXPath( + "//Button[@Name=\"New Multistage File\"][@AutomationId=\"JobListViewNewManufacturingStageFileButton\"]").Click(); //open new multistageWindow + + //session.SwitchTo().Window(session.WindowHandles.First()); + + + session.FindElementByXPath("//Button[@AutomationId=\"button\"]").Click(); //open filepicker + + + Thread.Sleep(100000); + } + + + + + #region DesktopSessionTests + + [Ignore("disabled Desktop Session tests")] [Test] public void LoadFile() { LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_multiple_stages.xml"); } - + [Ignore("disabled Desktop Session tests")] [Test] public void LoadFileAirdrag() { LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_multiple_stages_airdrag.xml"); } + [Ignore("disabled Desktop Session tests")] [Test] public void LoadFileheatPump() { LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_multiple_stages_heatPump.xml"); } - + [Ignore("disabled Desktop Session tests")] [Test] public void LoadFilehev() { @@ -50,37 +73,39 @@ namespace Vecto3GUI2020Test } - + [Ignore("disabled Desktop Session tests")] [Test] public void LoadFileNGTankSystem() { LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_multiple_stages_NGTankSystem.xml"); } + [Ignore("disabled Desktop Session tests")] [Test] public void LoadFileConsolidatedOneStage() { LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_one_stage.xml"); } - + [Ignore("disabled Desktop Session tests")] [Test] public void LoadFileConsolidatedTwoStages() { LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_two_stages.xml"); } - + [Ignore("disabled Desktop Session tests")] [Test] public void LoadFilePrimaryVehicleOnly() { LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_primary_vehicle_only.xml"); } + [Ignore("disabled Desktop Session tests")] [Test] public void LoadFilePrimaryVehicleStage_2_3() { LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_one_stage.xml"); } - + [Ignore("disabled Desktop Session tests")] [Test] public void LoadFilePrimaryVehicleOnlyAndCheckFields() { @@ -210,14 +235,14 @@ namespace Vecto3GUI2020Test } - + #endregion [TearDown] public void OneTimeTeardown() { TearDown(); - Thread.Sleep(1000); + Thread.Sleep(0); } diff --git a/Vecto3GUI2020Test/UI/VECTO3GUI2020Session.cs b/Vecto3GUI2020Test/UI/VECTO3GUI2020Session.cs index c509ef95965474be669baf8ec5a92b06f5f60ac0..dc54fdb7b27f07c17bcf14805da562c9e7b2ee87 100644 --- a/Vecto3GUI2020Test/UI/VECTO3GUI2020Session.cs +++ b/Vecto3GUI2020Test/UI/VECTO3GUI2020Session.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics; using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Appium.Windows; @@ -11,6 +12,8 @@ namespace Vecto3GUI2020Test.UI protected const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723"; private const string NotepadAppId = @"C:\Windows\System32\notepad.exe"; + private static Process winappDriverProcess; + internal static WindowsDriver<WindowsElement> session; internal static DesktopSession desktopSession; @@ -22,9 +25,9 @@ namespace Vecto3GUI2020Test.UI public static void Setup(TestContext context) { // Launch a new instance of VECTO application - if (session == null) - { - // Create a new session to launch Notepad application + if (session == null) { + winappDriverProcess = Process.Start(@"C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe"); + // Create a new session to launch Notepad application var appiumOptions = new OpenQA.Selenium.Appium.AppiumOptions(); appiumOptions.AddAdditionalCapability("app", @"C:\Users\Harry\source\repos\vecto-dev\VECTO3GUI2020\bin\Debug\VECTO3GUI2020.exe"); appiumOptions.AddAdditionalCapability("deviceName", "WindowsPC"); @@ -49,7 +52,8 @@ namespace Vecto3GUI2020Test.UI if (session != null) { session.CloseApp(); - + winappDriverProcess.Kill(); + session = null; } } diff --git a/Vecto3GUI2020Test/ViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs similarity index 64% rename from Vecto3GUI2020Test/ViewModelTests.cs rename to Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs index 1ba6933f93f1b4419b13f2a5ea79dca041defcfb..e5c6ca2ec92e530b7b5e41d4099e4d462f94ce78 100644 --- a/Vecto3GUI2020Test/ViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs @@ -3,59 +3,26 @@ using System.IO; using System.Linq; using System.Runtime.CompilerServices; using System.Xml; +using Castle.DynamicProxy.Generators.Emitters.SimpleAST; using Moq; using Ninject; using NUnit.Framework; using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; -using TUGraz.VectoCore; -using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.Models.SimulationComponent.Strategies; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Helper; -using VECTO3GUI2020.Ninject; -using VECTO3GUI2020.Ninject.Vehicle; using VECTO3GUI2020.ViewModel.MultiStage.Implementation; -using VECTO3GUI2020.ViewModel.MultiStage.Interfaces; namespace Vecto3GUI2020Test { - [TestFixture] - public class ViewModelTests - { - protected IXMLInputDataReader xmlInputReader; - private IKernel _kernel; - - const string DirPath = @"Testdata\"; - - private const string consolidated_multiple_stages = "vecto_multistage_consolidated_multiple_stages.xml"; - - private const string consolidated_multiple_stages_airdrag = - "vecto_multistage_consolidated_multiple_stages_airdrag.xml"; - - private const string consolidated_one_stage = "vecto_multistage_consolidated_one_stage.xml"; - private const string primary_vehicle_only = "vecto_multistage_primary_vehicle_only.xml"; - - [SetUp] - public void OneTimeSetUp() - { - _kernel = new StandardKernel( - new VectoNinjectModule(), - new JobEditModule(), - new ComponentModule(), - new DocumentModule(), - new XMLWriterFactoryModule(), - new FactoryModule(), - new MultistageModule() - ); - xmlInputReader = _kernel.Get<IXMLInputDataReader>(); - - } - + [TestFixture] + public class LoadAndSaveVehicleData : ViewModelTestBase + { [Test] public void loadInputFileMultipleStage() { @@ -67,6 +34,7 @@ namespace Vecto3GUI2020Test { var newMultiStageJob = loadFile(primary_vehicle_only); var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8; + Assert.NotNull(vehicle); vehicle.Manufacturer = "test1"; vehicle.ManufacturerAddress = "testAddress2"; vehicle.VIN = "VIN123456789"; @@ -75,16 +43,31 @@ namespace Vecto3GUI2020Test var manufacturingStage = newMultiStageJob.MultiStageJobViewModel as MultiStageJobViewModel_v0_1; - var fileName = primary_vehicle_only.Replace(".xml", "") + "_output.xml"; + Assert.NotNull(manufacturingStage); + + var fileName = primary_vehicle_only.Replace(".xml", "") + "_output.xml"; + deleteFile(fileName); _kernel.Rebind<IDialogHelper>().ToConstant(getMockDialogHelper(fileToSave:fileName).Object); - manufacturingStage.SaveInputDataAsCommand.Execute(null); + Assert.True(checkFileExists(fileName)); + } + [TestCase(primary_vehicle_only)] + [TestCase(consolidated_multiple_stages)] + [TestCase(consolidated_one_stage)] + public void SaveVehicleDataWithMissingFields(string fileName) + { + var newMultistageJobViewModel = loadFile(fileName); + var manstage = newMultistageJobViewModel.MultiStageJobViewModel as MultiStageJobViewModel_v0_1; + Assert.NotNull(manstage); - checkFileExists(fileName); - + var saveFileName = fileName.Replace(".xml", "") + "_output.xml"; + deleteFile(saveFileName); + _kernel.Rebind<IDialogHelper>().ToConstant(getMockDialogHelper(fileToSave: saveFileName).Object); + manstage.SaveInputDataAsCommand.Execute(null); + Assert.False(checkFileExists(saveFileName)); } @@ -131,10 +114,12 @@ namespace Vecto3GUI2020Test Assert.Null(vehicleViewModel_v2_8.ConsolidatedEntranceHeightInMm); Assert.AreEqual(vehicleViewModel_v2_8.AirdragModifiedMultistageEditingEnabled, false); + Assert.Null(vehicleViewModel_v2_8.BusAuxiliaries); - Assert.Null(vehicleViewModel_v2_8.BusAuxiliaries); + var vifInputData = vm.MultiStageJobViewModel as IMultistageVIFInputData; + Assert.Null(vifInputData.VehicleInputData.Components); } @@ -218,90 +203,10 @@ namespace Vecto3GUI2020Test } - [TearDown] - public void TearDown() - { - _kernel.Dispose(); - _kernel = null; - } - - - - #region Helper - public bool checkFileExists(string fileName) - { - var filePath = Path.GetFullPath(DirPath + fileName); - var exists = File.Exists(filePath); - if (!exists) - { - Console.WriteLine(filePath + @" not existing"); - } - - Assert.IsTrue(exists); - return exists; - } - - public NewMultiStageJobViewModel loadFile(string fileName) - { - string filePath = ""; - filePath = Path.GetFullPath(DirPath + fileName); - var dialogMock = new Mock<IDialogHelper>(); - dialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(filePath); - dialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(filePath); - - var newMultistageJobViewModel = new NewMultiStageJobViewModel(dialogMock.Object, xmlInputReader, - _kernel.Get<IMultiStageViewModelFactory>()); - newMultistageJobViewModel.AddVifFile.Execute(null); - - Assert.NotNull(newMultistageJobViewModel.MultiStageJobViewModel); - - var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8; - Assert.NotNull(manstageVehicleViewModel); - - var auxiliariesViewModel = manstageVehicleViewModel.MultistageAuxiliariesViewModel; - Assert.NotNull(auxiliariesViewModel); - - - - - var airdragViewModel = (manstageVehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8)?.MultistageAirdragViewModel; - Assert.NotNull(airdragViewModel); - - Assert.AreEqual(filePath, newMultistageJobViewModel.VifPath); - - - - return newMultistageJobViewModel; - } - - private Mock<IDialogHelper> getMockDialogHelper(string fileToLoad = null, string fileToSave = null) - { - Mock<IDialogHelper> mockDialogHelper = null; - if (fileToLoad != null) { - var filePath = Path.GetFullPath(DirPath + fileToLoad); - - Assert.NotNull(filePath); - mockDialogHelper = new Mock<IDialogHelper>(); - mockDialogHelper.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(filePath); - mockDialogHelper.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(filePath); - } - - if (fileToSave != null) { - var filePath = Path.GetFullPath(DirPath + fileToSave); - mockDialogHelper = mockDialogHelper ?? new Mock<IDialogHelper>(); - mockDialogHelper.Setup(dialogHelper => - dialogHelper.SaveToXMLDialog(It.IsAny<string>())).Returns(filePath); - mockDialogHelper.Setup(dialogHelper => - dialogHelper.SaveToXMLDialog(null)).Returns(filePath); - } - - - return mockDialogHelper; - } -#endregion + #endregion } } \ No newline at end of file diff --git a/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs b/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs new file mode 100644 index 0000000000000000000000000000000000000000..fb464a44d12f8cb852cc58cb07ad8bb668327bbe --- /dev/null +++ b/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using NUnit.Framework; +using VECTO3GUI2020.Helper; +using VECTO3GUI2020.ViewModel.MultiStage.Implementation; + +namespace Vecto3GUI2020Test.ViewModelTests +{ + public class VIFTests : ViewModelTestBase + { + + + [Test] + public void loadPrimaryVehicleOnlyAndCreateNewVIF() + { + var multistagevm = loadFile(primary_vehicle_only).MultiStageJobViewModel; + + var stage = multistagevm.ManufacturingStageViewModel.StageCount; + Assert.AreEqual(1, stage); + + //Set Necessary Fields + var vehicle = + multistagevm.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8; + vehicle.ManufacturerAddress = "Address"; + vehicle.Manufacturer = "Manufacturer"; + vehicle.VIN = "VIN12345678"; + + var outputFile = primary_vehicle_only.Replace(".xml", "_vif_output_mandatory_fields.xml"); + + deleteFile(outputFile); + getMockDialogHelper(null, fileToSave: primary_vehicle_only.Replace(".xml", "_vif_output.xml")); + _kernel.Rebind<IDialogHelper>().ToConstant(getMockDialogHelper(null, outputFile).Object); + + MultiStageJobViewModel_v0_1.SaveVif(multistagevm, outputFile); + + Assert.IsTrue(checkFileExists(outputFile)); + + } + + + + } +} diff --git a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs new file mode 100644 index 0000000000000000000000000000000000000000..4e20d27fe4ce296484f13292b6a7164fa9cba682 --- /dev/null +++ b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs @@ -0,0 +1,132 @@ +using System; +using System.IO; +using Moq; +using Ninject; +using NUnit.Framework; +using TUGraz.VectoCore; +using TUGraz.VectoCore.InputData.FileIO.XML; +using VECTO3GUI2020.Helper; +using VECTO3GUI2020.Ninject; +using VECTO3GUI2020.Ninject.Vehicle; +using VECTO3GUI2020.ViewModel.MultiStage.Implementation; +using VECTO3GUI2020.ViewModel.MultiStage.Interfaces; + +namespace Vecto3GUI2020Test +{ + public class ViewModelTestBase + { + protected const string DirPath = @"Testdata\"; + protected const string consolidated_multiple_stages = "vecto_multistage_consolidated_multiple_stages.xml"; + + protected const string consolidated_multiple_stages_airdrag = + "vecto_multistage_consolidated_multiple_stages_airdrag.xml"; + + protected const string consolidated_one_stage = "vecto_multistage_consolidated_one_stage.xml"; + protected const string primary_vehicle_only = "vecto_multistage_primary_vehicle_only.xml"; + + protected IXMLInputDataReader xmlInputReader; + protected IKernel _kernel; + + [SetUp] + public void OneTimeSetUp() + { + _kernel = new StandardKernel( + new VectoNinjectModule(), + new JobEditModule(), + new ComponentModule(), + new DocumentModule(), + new XMLWriterFactoryModule(), + new FactoryModule(), + new MultistageModule() + ); + xmlInputReader = _kernel.Get<IXMLInputDataReader>(); + + } + + [TearDown] + public void TearDown() + { + _kernel.Dispose(); + _kernel = null; + } + + public bool checkFileExists(string fileName) + { + var filePath = Path.GetFullPath(DirPath + fileName); + var exists = File.Exists(filePath); + if (exists) + { + Console.WriteLine(filePath + @" exists"); + } else { + Console.WriteLine(filePath + @" not existing"); + } + + return exists; + } + + public void deleteFile(string fileName) + { + var filePath = Path.GetFullPath(DirPath + fileName); + File.Delete(fileName); + } + + public NewMultiStageJobViewModel loadFile(string fileName) + { + string filePath = ""; + filePath = Path.GetFullPath(DirPath + fileName); + + var dialogMock = new Mock<IDialogHelper>(); + dialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(filePath); + dialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(filePath); + + var newMultistageJobViewModel = new NewMultiStageJobViewModel(dialogMock.Object, xmlInputReader, + _kernel.Get<IMultiStageViewModelFactory>()); + newMultistageJobViewModel.AddVifFile.Execute(null); + + Assert.NotNull(newMultistageJobViewModel.MultiStageJobViewModel); + + var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8; + Assert.NotNull(manstageVehicleViewModel); + + var auxiliariesViewModel = manstageVehicleViewModel.MultistageAuxiliariesViewModel; + Assert.NotNull(auxiliariesViewModel); + + + + + var airdragViewModel = (manstageVehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8)?.MultistageAirdragViewModel; + Assert.NotNull(airdragViewModel); + + Assert.AreEqual(filePath, newMultistageJobViewModel.VifPath); + + + + return newMultistageJobViewModel; + } + + protected Mock<IDialogHelper> getMockDialogHelper(string fileToLoad = null, string fileToSave = null) + { + Mock<IDialogHelper> mockDialogHelper = null; + if (fileToLoad != null) { + var filePath = Path.GetFullPath(DirPath + fileToLoad); + + Assert.NotNull(filePath); + mockDialogHelper = new Mock<IDialogHelper>(); + mockDialogHelper.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(filePath); + mockDialogHelper.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(filePath); + } + + if (fileToSave != null) { + var filePath = Path.GetFullPath(DirPath + fileToSave); + mockDialogHelper = mockDialogHelper ?? new Mock<IDialogHelper>(); + mockDialogHelper.Setup(dialogHelper => + dialogHelper.SaveToXMLDialog(It.IsAny<string>())).Returns(filePath); + mockDialogHelper.Setup(dialogHelper => + dialogHelper.SaveToXMLDialog(null)).Returns(filePath); + } + + + return mockDialogHelper; + } + } +} \ No newline at end of file