public void CanDetectCsProjFileWithGivenBootstrapCsProj()
        {
            const string rootPath      = "/unit-test";
            var          theCsProjFile = $"{rootPath}/test.csproj";

            var fakeFileSystem = A.Fake <IFileSystemProvider>(opts => opts.Strict());

            A.CallTo(() => fakeFileSystem.List(A <string> ._)).Returns(
                new List <string> {
                theCsProjFile,
                $"{rootPath}/Test.cs",
            }
                );
            A.CallTo(() =>
                     fakeFileSystem.IsCsProjectFile(
                         A <string> .That.Matches(str => str == theCsProjFile)))
            .Returns(true);
            A.CallTo(() =>
                     fakeFileSystem.LoadContent(A <string> .That.Matches(str => str == theCsProjFile))
                     ).Returns(_projectXml);

            var detect = new ProjectFileDetector(fakeFileSystem);
            var xml    = detect.FindAndLoadCsProj(theCsProjFile);

            Assert.Equal(_projectXml, xml);
            Assert.Equal(theCsProjFile, detect.ResolvedCsProjFile);
        }
        public VersionCliTest()
        {
            _vcsTool = A.Fake <IVcs>(opts => opts.Strict());
            A.CallTo(() => _vcsTool.ToolName()).Returns("_FAKE_");

            _fileDetector = A.Fake <ProjectFileDetector>();
            _fileParser   = A.Fake <ProjectFileParser>();
            _filePatcher  = A.Fake <ProjectFileVersionPatcher>();

            A.CallTo(() => _fileDetector.FindAndLoadCsProj(A <string> ._)).Returns("<Project/>");
            const string csProjFilePath = "/unit-test/test.csproj";

            A.CallTo(() => _fileDetector.ResolvedCsProjFile).Returns(csProjFilePath);

            A.CallTo(() => _fileParser.Load(A <string> ._)).DoesNothing();
            A.CallTo(() => _fileParser.Version).Returns("1.2.1");

            _cli = new VersionCli(
                _vcsTool,
                _fileDetector,
                _fileParser,
                _filePatcher,
                new SemVerBumper()
                );
        }
 public VersionCli(
     IVcs vcsClient,
     ProjectFileDetector fileDetector,
     ProjectFileParser fileParser,
     ProjectFileVersionPatcher fileVersionPatcher
     )
 {
     _vcsTool            = vcsClient;
     _fileDetector       = fileDetector;
     _fileParser         = fileParser;
     _fileVersionPatcher = fileVersionPatcher;
 }
        public void Aborts_when_no_csproj_file()
        {
            const string rootPath = "/unit-test";

            var fakeFileSystem = A.Fake <IFileSystemProvider>(opts => opts.Strict());

            A.CallTo(() => fakeFileSystem.List(A <string> ._)).Returns(
                new List <string> {
                $"{rootPath}/Test.cs",
            }
                );
            A.CallTo(() =>
                     fakeFileSystem.IsCsProjectFile(
                         A <string> .That.Matches(str => str == $"{rootPath}")))
            .Returns(false);


            var detect = new ProjectFileDetector(fakeFileSystem);

            Assert.Throws <OperationCanceledException>(() => detect.FindAndLoadCsProj(rootPath));
        }