public void SetupTest()
        {
            _redirector              = new MockRedirector();
            _gitClient               = new MockGitClient();
            _gitHubClient            = new MockGitHubClient();
            _cutterClient            = new MockCookiecutterClient();
            _installedTemplateSource = new MockTemplateSource();
            _gitHubTemplateSource    = new MockTemplateSource();
            _feedTemplateSource      = new MockTemplateSource();
            _projectSystemClient     = new MockProjectSystemClient();

            var output = TestData.GetTempPath("Cookiecutter", true);
            var outputProjectFolder = Path.Combine(output, "project");

            _telemetry = new CookiecutterTelemetry(new TelemetryTestService());
            _vm        = new CookiecutterViewModel(
                _cutterClient,
                _gitHubClient,
                _gitClient,
                _telemetry,
                _redirector,
                _installedTemplateSource,
                _feedTemplateSource,
                _gitHubTemplateSource,
                null,
                _projectSystemClient
                );
            _vm.UserConfigFilePath = UserConfigFilePath;
            _vm.OutputFolderPath   = outputProjectFolder;
        }
Beispiel #2
0
        private async Task <Dictionary <string, string> > GenerateFromLocalTemplate(string userConfigFilePath)
        {
            var context = await _client.LoadContextAsync(LocalTemplatePath, userConfigFilePath);

            var output = TestData.GetTempPath("Cookiecutter", true);
            var outputProjectFolder = Path.Combine(output, "project");
            var contextFilePath     = Path.Combine(output, "context.json");

            var vm = new CookiecutterViewModel();

            foreach (var item in context)
            {
                vm.ContextItems.Add(new ContextItemViewModel(item.Name, item.Selector, item.Label, item.Description, item.Url, item.DefaultValue, item.Values));
            }

            vm.SaveUserInput(contextFilePath);

            Directory.CreateDirectory(outputProjectFolder);

            await _client.GenerateProjectAsync(LocalTemplatePath, userConfigFilePath, contextFilePath, outputProjectFolder);

            var reportFilePath = Path.Combine(outputProjectFolder, "report.txt");

            Assert.IsTrue(File.Exists(reportFilePath), "Failed to generate some project files.");
            return(ReadReport(reportFilePath));
        }
        public void SetupTest()
        {
            _redirector = new MockRedirector();

            var output = TestData.GetTempPath("Cookiecutter", true);
            var outputProjectFolder = Path.Combine(output, "integration");
            var feedUrl             = new Uri(TestFeedPath);
            var installedPath       = TestInstalledTemplateFolderPath;
            var userConfigFilePath  = TestUserConfigFilePath;

            _gitClient               = GitClientProvider.Create(_redirector, null);
            _gitHubClient            = new GitHubClient();
            _cutterClient            = CookiecutterClientProvider.Create(null, _redirector);
            _telemetry               = new CookiecutterTelemetry(new TelemetryTestService());
            _installedTemplateSource = new LocalTemplateSource(installedPath, _gitClient);
            _gitHubTemplateSource    = new GitHubTemplateSource(_gitHubClient);
            _feedTemplateSource      = new FeedTemplateSource(feedUrl);
            _projectSystemClient     = new MockProjectSystemClient();

            _vm = new CookiecutterViewModel(
                _cutterClient,
                _gitHubClient,
                _gitClient,
                _telemetry,
                _redirector,
                _installedTemplateSource,
                _feedTemplateSource,
                _gitHubTemplateSource,
                ExecuteCommand,
                _projectSystemClient
                );

            _vm.UserConfigFilePath = userConfigFilePath;
            ((CookiecutterClient)_cutterClient).DefaultBasePath = outputProjectFolder;
        }
        public CookiecutterControl(Redirector outputWindow, ICookiecutterTelemetry telemetry, Uri feedUrl, Action <string> openFolder, Action updateCommandUI)
        {
            _updateCommandUI = updateCommandUI;

            _checkForUpdatesTimer       = new DispatcherTimer();
            _checkForUpdatesTimer.Tick += new EventHandler(CheckForUpdateTimer_Tick);

            string gitExeFilePath = GitClient.RecommendedGitFilePath;
            var    gitClient      = new GitClient(gitExeFilePath, outputWindow);
            var    gitHubClient   = new GitHubClient();

            ViewModel = new CookiecutterViewModel(
                CookiecutterClientProvider.Create(outputWindow),
                gitHubClient,
                gitClient,
                telemetry,
                outputWindow,
                new LocalTemplateSource(CookiecutterViewModel.DefaultInstalledFolderPath, gitClient),
                new FeedTemplateSource(feedUrl),
                new GitHubTemplateSource(gitHubClient),
                openFolder
                );

            ViewModel.UserConfigFilePath = CookiecutterViewModel.GetUserConfigPath();
            ViewModel.OutputFolderPath   = string.Empty; // leaving this empty for now, force user to enter one
            ViewModel.ContextLoaded     += ViewModel_ContextLoaded;
            ViewModel.HomeClicked       += ViewModel_HomeClicked;

            _searchPage = new CookiecutterSearchPage {
                DataContext = ViewModel
            };
            _optionsPage = new CookiecutterOptionsPage {
                DataContext = ViewModel
            };

            var pages = new List <Page>();

            pages.Add(_searchPage);
            pages.Add(_optionsPage);

            _pageSequence = new CollectionViewSource {
                Source = new ObservableCollection <Page>(pages)
            };
            PageCount = _pageSequence.View.OfType <object>().Count();

            PageSequence = _pageSequence.View;
            PageSequence.MoveCurrentToFirst();

            DataContext = this;

            InitializeComponent();

            _searchPage.SelectedTemplateChanged += SearchPage_SelectedTemplateChanged;
        }
Beispiel #5
0
        public void SetupTest()
        {
            _redirector = new MockRedirector();

            var output = TestData.GetTempPath("Cookiecutter", true);
            var outputProjectFolder = Path.Combine(output, "integration");
            var feedUrl             = new Uri(TestFeedPath);
            var installedPath       = TestInstalledTemplateFolderPath;
            var userConfigFilePath  = TestUserConfigFilePath;

            _gitClient               = new GitClient(GitClient.RecommendedGitFilePath);
            _gitHubClient            = new GitHubClient();
            _cutterClient            = CookiecutterClientProvider.Create();
            _installedTemplateSource = new LocalTemplateSource(installedPath, _gitClient);
            _gitHubTemplateSource    = new GitHubTemplateSource(_gitHubClient);
            _feedTemplateSource      = new FeedTemplateSource(feedUrl);

            _vm = new CookiecutterViewModel(_cutterClient, _gitHubClient, _gitClient, _redirector, _installedTemplateSource, _feedTemplateSource, _gitHubTemplateSource, null);
            _vm.UserConfigFilePath = userConfigFilePath;
            _vm.OutputFolderPath   = outputProjectFolder;
        }