private CompositeProductFileImport csvAndJsonSupported()
 {
     return(CompositeProductFileImport.Builder()
            .registerStrategy(new JsonFileImport())
            .registerStrategy(new CsvFileImport())
            .build());
 }
        public void ShouldThrowExceptionWhenNoStrategyFoundForFile()
        {
            // Given
            CompositeProductFileImport composite = anyNotSupported();
            StreamReader reader = readNotSupportedFile();

            // Then
            Assert.Throws <ArgumentException>(() => composite.Import(reader));
        }
        public void ShouldUseCsvFileImportWheMultipleStrategiesArePresent()
        {
            // Given
            CompositeProductFileImport composite = csvAndJsonSupported();
            StreamReader reader = readEmptyCsvTestFile();

            // When
            List <Product> result = composite.Import(reader);

            // Then
            Assert.IsEmpty(result);
        }
        public void ShouldUseJsonFileImportWhenMultipleStrategiesArePresent()
        {
            // Given
            CompositeProductFileImport composite = csvAndJsonSupported();
            StreamReader reader = readJsonTestFile();

            List <Product> expectedResult = new List <Product>();

            expectedResult.Add(new Product(1, "name", "category", 2.50, 10));
            expectedResult.Add(new Product(2, "name2", "category", 3.20, 1));

            // When
            List <Product> result = composite.Import(reader);

            // Then
            Assert.AreEqual(expectedResult[0], result[0]);
            Assert.AreEqual(expectedResult[1], result[1]);
        }
        public MainWindow()
        {
            InitializeComponent();
            SourceInitialized += (s, e) => {
                IntPtr handle = (new WindowInteropHelper(this)).Handle;
                HwndSource.FromHwnd(handle).AddHook(WindowProc);
            };
            MinimizeButton.Click += (s, e) => WindowState = WindowState.Minimized;
            MaximizeButton.Click += (s, e) =>
                                    WindowState = WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized;
            CloseButton.Click += (s, e) => Close();

            _productRepository = new ProductRepository();
            fileImportData     = CompositeProductFileImport.Builder()
                                 .registerStrategy(new JsonFileImport())
                                 .registerStrategy(new CsvFileImport())
                                 .build();
            _charts = new Charts();

            _importDataPage = new ImportDataPage(_productRepository, fileImportData);
            _manageDataPage = new ManageDataPage(_productRepository);
            //_visualizeDataPage = new VisualizeDataPage(_productRepository);
            _mainFrame.Navigate(_importDataPage);
        }
 private CompositeProductFileImport anyNotSupported()
 {
     return(CompositeProductFileImport.Builder()
            .build());
 }