예제 #1
0
        public void CloneWillCloneTheRepositoryToTheDestination()
        {
            var cloneView = Mocks.StrictMock<CloneView>();

            cloneView.SetPropertyAsBehavior(v => v.RepositoryToClone);
            cloneView.SetPropertyAsBehavior(v => v.DestinationFolder);

            var clone = Mocks.StrictMock<Clone>();

            clone.SetPropertyAsBehavior(v => v.RepositoryToClone);
            clone.SetPropertyAsBehavior(v => v.Destination);
            clone.SetPropertyAsBehavior(v => v.ProjectLocation);

            var result = new TestAsyncResults
                             {
                                 AsyncState = new FakeOutput
                                                  {
                                                      Output = "Clone completed successfully"
                                                  }
                             };

            clone.Expect(v => v.Run()).Return(result);

            Mocks.ReplayAll();

            const string repoToClone = @"C:\UnitTestRepo\ToClone";
            const string destinationFolder = @"C:\NewClone\Location";

            cloneView.RepositoryToClone = repoToClone;
            cloneView.DestinationFolder = destinationFolder;

            var presenter = new ClonePresenter(cloneView)
                                {
                                    Clone = clone
                                };

            bool eventTriggered = false;
            string output = string.Empty;

            Action<Output> cloneComplete = o =>
                                               {
                                                   eventTriggered = true;
                                                   output = o.Output;
                                               };

            presenter.CloneComplete += cloneComplete;

            presenter.PerformClone();

            Assert.That(clone.RepositoryToClone, Is.EqualTo(repoToClone));
            Assert.That(clone.Destination, Is.EqualTo(destinationFolder));
            Assert.That(eventTriggered);
            Assert.That(output, Is.EqualTo("Clone completed successfully"));
            Assert.That(clone.ProjectLocation, Is.Null);
        }
예제 #2
0
        public void CloneWillThrowAnExceptionIfRepoToCloneIsNotPopulated()
        {
            var cloneView = Mocks.StrictMock<CloneView>();

            cloneView.SetPropertyAsBehavior(v => v.RepositoryToClone);
            cloneView.SetPropertyAsBehavior(v => v.DestinationFolder);

            var clone = Mocks.StrictMock<Clone>();

            clone.SetPropertyAsBehavior(v => v.RepositoryToClone);
            clone.SetPropertyAsBehavior(v => v.Destination);

            clone.Expect(v => v.Run()).Repeat.Never();

            Mocks.ReplayAll();

            const string destinationFolder = @"C:\NewClone\Location";

            cloneView.RepositoryToClone = null;
            cloneView.DestinationFolder = destinationFolder;

            var presenter = new ClonePresenter(cloneView)
                                {
                                    Clone = clone
                                };

            presenter.PerformClone();
        }