コード例 #1
0
            public void GetAuthorsFromInputPath()
            {
                // Given
                IExecutionContext context = Substitute.For <IExecutionContext>();

                context.FileSystem.RootPath.Returns(new DirectoryPath("/"));
                context.FileSystem.InputPaths.Returns(x => new[] { new DirectoryPath(TestContext.CurrentContext.TestDirectory) });
                context.GetDocument(Arg.Any <IEnumerable <KeyValuePair <string, object> > >()).Returns(getNewDocumentCallInfo =>
                {
                    IDocument newDocument = Substitute.For <IDocument>();
                    newDocument.GetEnumerator()
                    .Returns(getNewDocumentCallInfo.ArgAt <IEnumerable <KeyValuePair <string, object> > >(0).GetEnumerator());
                    newDocument.String(Arg.Any <string>())
                    .Returns(stringCallInfo => (string)getNewDocumentCallInfo.ArgAt <IEnumerable <KeyValuePair <string, object> > >(0).First(x => x.Key == stringCallInfo.ArgAt <string>(0)).Value);
                    return(newDocument);
                });
                IDocument       document        = Substitute.For <IDocument>();
                GitContributors gitContributors = new GitContributors().WithCommitters(false);

                // When
                List <IDocument> results = gitContributors.Execute(new[] { document }, context).ToList();  // Make sure to materialize the result list

                // Then
                Assert.That(results.Count, Is.GreaterThan(4));
                Dictionary <string, object> result = results
                                                     .Single(x => x.String(GitKeys.ContributorEmail) == "*****@*****.**" && x.String(GitKeys.ContributorName) == "Dave Glick")
                                                     .ToDictionary(x => x.Key, x => x.Value);
                List <Dictionary <string, object> > commits = ((IEnumerable <IDocument>)result[GitKeys.Commits])
                                                              .Select(x => x.ToDictionary(y => y.Key, y => y.Value)).ToList();

                Assert.That(commits.Count, Is.GreaterThan(200));
                Assert.IsTrue(commits.All(x => (string)x[GitKeys.AuthorEmail] == "*****@*****.**"));
            }
コード例 #2
0
        public void GetCommittersFromInputPath()
        {
            // Given
            IExecutionContext context = Substitute.For<IExecutionContext>();
            context.InputFolder.Returns(Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(Environment.CurrentDirectory)))); // Ascend from \bin\Debug
            context.GetNewDocument(Arg.Any<IEnumerable<MetadataItem>>()).Returns(getNewDocumentCallInfo =>
            {
                IDocument newDocument = Substitute.For<IDocument>();
                newDocument.GetEnumerator()
                    .Returns(getNewDocumentCallInfo.ArgAt<IEnumerable<MetadataItem>>(0).Select(x => (KeyValuePair<string, object>)x).GetEnumerator());
                newDocument.String(Arg.Any<string>())
                    .Returns(stringCallInfo => (string)getNewDocumentCallInfo.ArgAt<IEnumerable<MetadataItem>>(0).First(x => x.Key == stringCallInfo.ArgAt<string>(0)).Value);
                return newDocument;
            });
            IDocument document = Substitute.For<IDocument>();
            GitContributors gitContributors = new GitContributors().WithAuthors(false);

            // When
            List<IDocument> results = gitContributors.Execute(new[] { document }, context).ToList();  // Make sure to materialize the result list

            // Then
            Assert.That(results.Count, Is.GreaterThan(4));
            Dictionary<string, object> firstResultMetadata = results[0].ToDictionary(x => x.Key, x => x.Value);
            Assert.AreEqual("*****@*****.**", firstResultMetadata[GitKeys.ContributorEmail]);
            Assert.AreEqual("Dave Glick", firstResultMetadata[GitKeys.ContributorName]);
            List<Dictionary<string, object>> commits = ((IEnumerable<IDocument>)firstResultMetadata[GitKeys.Commits])
                .Select(x => x.ToDictionary(y => y.Key, y => y.Value)).ToList();
            Assert.That(commits.Count, Is.GreaterThan(200));
            Assert.IsTrue(commits.All(x => (string)x[GitKeys.CommitterEmail] == "*****@*****.**"));
        }
コード例 #3
0
            public void GetAuthorsFromInputPath()
            {
                // Given
                IExecutionContext context = Substitute.For<IExecutionContext>();
                context.InputFolder.Returns(TestContext.CurrentContext.TestDirectory);
                context.GetDocument(Arg.Any<IEnumerable<KeyValuePair<string, object>>>()).Returns(getNewDocumentCallInfo =>
                {
                    IDocument newDocument = Substitute.For<IDocument>();
                    newDocument.GetEnumerator()
                        .Returns(getNewDocumentCallInfo.ArgAt<IEnumerable<KeyValuePair<string, object>>>(0).GetEnumerator());
                    newDocument.String(Arg.Any<string>())
                        .Returns(stringCallInfo => (string)getNewDocumentCallInfo.ArgAt<IEnumerable<KeyValuePair<string, object>>>(0).First(x => x.Key == stringCallInfo.ArgAt<string>(0)).Value);
                    return newDocument;
                });
                IDocument document = Substitute.For<IDocument>();
                GitContributors gitContributors = new GitContributors().WithCommitters(false);

                // When
                List<IDocument> results = gitContributors.Execute(new[] { document }, context).ToList();  // Make sure to materialize the result list

                // Then
                Assert.That(results.Count, Is.GreaterThan(4));
                Dictionary<string, object> result = results
                    .Single(x => x.String(GitKeys.ContributorEmail) == "*****@*****.**" && x.String(GitKeys.ContributorName) == "Dave Glick")
                    .ToDictionary(x => x.Key, x => x.Value);
                List<Dictionary<string, object>> commits = ((IEnumerable<IDocument>)result[GitKeys.Commits])
                    .Select(x => x.ToDictionary(y => y.Key, y => y.Value)).ToList();
                Assert.That(commits.Count, Is.GreaterThan(200));
                Assert.IsTrue(commits.All(x => (string)x[GitKeys.AuthorEmail] == "*****@*****.**"));
            }
コード例 #4
0
        public void GetAuthorsFromInputPath()
        {
            // Given
            IExecutionContext context = Substitute.For <IExecutionContext>();

            context.InputFolder.Returns(Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(Environment.CurrentDirectory)))); // Ascend from \bin\Debug
            context.GetNewDocument(Arg.Any <IEnumerable <MetadataItem> >()).Returns(getNewDocumentCallInfo =>
            {
                IDocument newDocument = Substitute.For <IDocument>();
                newDocument.GetEnumerator()
                .Returns(getNewDocumentCallInfo.ArgAt <IEnumerable <MetadataItem> >(0).Select(x => (KeyValuePair <string, object>)x).GetEnumerator());
                newDocument.String(Arg.Any <string>())
                .Returns(stringCallInfo => (string)getNewDocumentCallInfo.ArgAt <IEnumerable <MetadataItem> >(0).First(x => x.Key == stringCallInfo.ArgAt <string>(0)).Value);
                return(newDocument);
            });
            IDocument       document        = Substitute.For <IDocument>();
            GitContributors gitContributors = new GitContributors().WithCommitters(false);

            // When
            List <IDocument> results = gitContributors.Execute(new[] { document }, context).ToList();  // Make sure to materialize the result list

            // Then
            Assert.That(results.Count, Is.GreaterThan(4));
            Dictionary <string, object> firstResultMetadata = results[0].ToDictionary(x => x.Key, x => x.Value);

            Assert.AreEqual("*****@*****.**", firstResultMetadata[GitKeys.ContributorEmail]);
            Assert.AreEqual("Dave Glick", firstResultMetadata[GitKeys.ContributorName]);
            List <Dictionary <string, object> > commits = ((IEnumerable <IDocument>)firstResultMetadata[GitKeys.Commits])
                                                          .Select(x => x.ToDictionary(y => y.Key, y => y.Value)).ToList();

            Assert.That(commits.Count, Is.GreaterThan(200));
            Assert.IsTrue(commits.All(x => (string)x[GitKeys.AuthorEmail] == "*****@*****.**"));
        }
コード例 #5
0
            public void GetCommittersForInputDocument()
            {
                // Given
                string inputFolder =
                    Path.GetDirectoryName(
                        Path.GetDirectoryName(
                            Path.GetDirectoryName(
                                Path.GetDirectoryName(TestContext.CurrentContext.TestDirectory)
                                )
                            )
                        );
                IExecutionContext context = Substitute.For <IExecutionContext>();

                context.InputFolder.Returns(inputFolder);
                context.GetDocument(Arg.Any <IEnumerable <KeyValuePair <string, object> > >()).Returns(getNewDocumentCallInfo =>
                {
                    IDocument newDocument = Substitute.For <IDocument>();
                    newDocument.GetEnumerator()
                    .Returns(getNewDocumentCallInfo.ArgAt <IEnumerable <KeyValuePair <string, object> > >(0).GetEnumerator());
                    newDocument.String(Arg.Any <string>())
                    .Returns(stringCallInfo => (string)getNewDocumentCallInfo.ArgAt <IEnumerable <KeyValuePair <string, object> > >(0).First(x => x.Key == stringCallInfo.ArgAt <string>(0)).Value);
                    newDocument.Get <IReadOnlyDictionary <string, string> >(Arg.Any <string>())
                    .Returns(getCallInfo => (IReadOnlyDictionary <string, string>)getNewDocumentCallInfo.ArgAt <IEnumerable <KeyValuePair <string, object> > >(0).First(x => x.Key == getCallInfo.ArgAt <string>(0)).Value);
                    newDocument.Get <IReadOnlyList <IDocument> >(Arg.Any <string>())
                    .Returns(getCallInfo => (IReadOnlyList <IDocument>)getNewDocumentCallInfo.ArgAt <IEnumerable <KeyValuePair <string, object> > >(0).First(x => x.Key == getCallInfo.ArgAt <string>(0)).Value);
                    newDocument[Arg.Any <string>()]
                    .Returns(getCallInfo => getNewDocumentCallInfo.ArgAt <IEnumerable <KeyValuePair <string, object> > >(0).First(x => x.Key == getCallInfo.ArgAt <string>(0)).Value);
                    return(newDocument);
                });
                IDocument document = Substitute.For <IDocument>();

                document.Source.Returns(Path.Combine(inputFolder, "Wyam.Core\\IModule.cs"));  // Use file that no longer exists so commit count is stable
                context.GetDocument(Arg.Any <IDocument>(), Arg.Any <IEnumerable <KeyValuePair <string, object> > >()).Returns(x =>
                {
                    IDocument newDocument = Substitute.For <IDocument>();
                    newDocument.GetEnumerator().Returns(x.ArgAt <IEnumerable <KeyValuePair <string, object> > >(1).GetEnumerator());
                    return(newDocument);
                });
                GitContributors gitContributors = new GitContributors().ForEachInputDocument();

                // When
                List <IDocument> results = gitContributors.Execute(new[] { document }, context).ToList();  // Make sure to materialize the result list

                // Then
                Assert.AreEqual(1, results.Count);
                List <IDocument> contributors =
                    ((IEnumerable <IDocument>)results[0].First(x => x.Key == GitKeys.Contributors).Value).ToList();
                Dictionary <string, object> contributor = contributors
                                                          .Single(x => x.String(GitKeys.ContributorEmail) == "*****@*****.**" && x.String(GitKeys.ContributorName) == "Dave Glick")
                                                          .ToDictionary(x => x.Key, x => x.Value);
                List <Dictionary <string, object> > commits = ((IEnumerable <IDocument>)contributor[GitKeys.Commits])
                                                              .Select(x => x.ToDictionary(y => y.Key, y => y.Value)).ToList();

                Assert.That(commits.Count, Is.LessThan(10));
                Assert.IsTrue(commits.All(x => (string)x[GitKeys.CommitterEmail] == "*****@*****.**" || (string)x[GitKeys.AuthorEmail] == "*****@*****.**"));
            }
コード例 #6
0
        public void GetCommittersForInputDocument()
        {
            // Given
            IExecutionContext context = Substitute.For<IExecutionContext>();
            context.InputFolder.Returns(Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(Environment.CurrentDirectory)))); // Ascend from \bin\Debug
            context.GetNewDocument(Arg.Any<IEnumerable<MetadataItem>>()).Returns(getNewDocumentCallInfo =>
            {
                IDocument newDocument = Substitute.For<IDocument>();
                newDocument.GetEnumerator()
                    .Returns(getNewDocumentCallInfo.ArgAt<IEnumerable<MetadataItem>>(0).Select(x => (KeyValuePair<string, object>)x).GetEnumerator());
                newDocument.String(Arg.Any<string>())
                    .Returns(stringCallInfo => (string)getNewDocumentCallInfo.ArgAt<IEnumerable<MetadataItem>>(0).First(x => x.Key == stringCallInfo.ArgAt<string>(0)).Value);
                newDocument.Get<IReadOnlyDictionary<string, string>>(Arg.Any<string>())
                    .Returns(getCallInfo => (IReadOnlyDictionary<string, string>)getNewDocumentCallInfo.ArgAt<IEnumerable<MetadataItem>>(0).First(x => x.Key == getCallInfo.ArgAt<string>(0)).Value);
                newDocument.Get<IReadOnlyList<IDocument>>(Arg.Any<string>())
                    .Returns(getCallInfo => (IReadOnlyList<IDocument>)getNewDocumentCallInfo.ArgAt<IEnumerable<MetadataItem>>(0).First(x => x.Key == getCallInfo.ArgAt<string>(0)).Value);
                newDocument[Arg.Any<string>()]
                    .Returns(getCallInfo => getNewDocumentCallInfo.ArgAt<IEnumerable<MetadataItem>>(0).First(x => x.Key == getCallInfo.ArgAt<string>(0)).Value);
                return newDocument;
            });
            IDocument document = Substitute.For<IDocument>();
            document.Source.Returns(
                Path.Combine(
                    Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(Environment.CurrentDirectory))),
                    "Wyam.Core\\IModule.cs"));  // Use file that no longer exists so commit count is stable
            document.Clone(Arg.Any<IEnumerable<MetadataItem>>()).Returns(x =>
            {
                IDocument newDocument = Substitute.For<IDocument>();
                newDocument.GetEnumerator().Returns(x.ArgAt<IEnumerable<MetadataItem>>(0).Select(y => (KeyValuePair<string, object>)y).GetEnumerator());
                return newDocument;
            });
            GitContributors gitContributors = new GitContributors().ForEachInputDocument();

            // When
            List<IDocument> results = gitContributors.Execute(new[] { document }, context).ToList();  // Make sure to materialize the result list

            // Then
            Assert.AreEqual(1, results.Count);
            List<IDocument> contributors =
                ((IEnumerable<IDocument>)results[0].First(x => x.Key == GitKeys.Contributors).Value).ToList();
            Dictionary<string, object> firstContributorMetadata = contributors[0].ToDictionary(x => x.Key, x => x.Value);
            Assert.AreEqual("*****@*****.**", firstContributorMetadata[GitKeys.ContributorEmail]);
            Assert.AreEqual("Dave Glick", firstContributorMetadata[GitKeys.ContributorName]);
            List<Dictionary<string, object>> commits = ((IEnumerable<IDocument>)firstContributorMetadata[GitKeys.Commits])
                .Select(x => x.ToDictionary(y => y.Key, y => y.Value)).ToList();
            Assert.That(commits.Count, Is.LessThan(10));
            Assert.IsTrue(commits.All(x => (string)x[GitKeys.CommitterEmail] == "*****@*****.**" || (string)x[GitKeys.AuthorEmail] == "*****@*****.**"));
        }
コード例 #7
0
ファイル: GitContributorsTests.cs プロジェクト: ibebbs/Wyam
            public void GetCommittersForInputDocument()
            {
                // Given
                DirectoryPath inputPath = new DirectoryPath(TestContext.CurrentContext.TestDirectory).Parent.Parent.Parent.Parent;
                IExecutionContext context = Substitute.For<IExecutionContext>();
                context.FileSystem.RootPath.Returns(new DirectoryPath("/"));
                context.FileSystem.InputPaths.Returns(x => new[] { inputPath });
                context.GetDocument(Arg.Any<IEnumerable<KeyValuePair<string, object>>>()).Returns(getNewDocumentCallInfo =>
                {
                    IDocument newDocument = Substitute.For<IDocument>();
                    newDocument.GetEnumerator()
                        .Returns(getNewDocumentCallInfo.ArgAt<IEnumerable<KeyValuePair<string, object>>>(0).GetEnumerator());
                    newDocument.String(Arg.Any<string>())
                        .Returns(stringCallInfo => (string)getNewDocumentCallInfo.ArgAt<IEnumerable<KeyValuePair<string, object>>>(0).First(x => x.Key == stringCallInfo.ArgAt<string>(0)).Value);
                    newDocument.Get<IReadOnlyDictionary<FilePath, string>>(Arg.Any<string>())
                        .Returns(getCallInfo => (IReadOnlyDictionary<FilePath, string>)getNewDocumentCallInfo.ArgAt<IEnumerable<KeyValuePair<string, object>>>(0).First(x => x.Key == getCallInfo.ArgAt<string>(0)).Value);
                    newDocument.Get<IReadOnlyList<IDocument>>(Arg.Any<string>())
                        .Returns(getCallInfo => (IReadOnlyList<IDocument>)getNewDocumentCallInfo.ArgAt<IEnumerable<KeyValuePair<string, object>>>(0).First(x => x.Key == getCallInfo.ArgAt<string>(0)).Value);
                    newDocument[Arg.Any<string>()]
                        .Returns(getCallInfo => getNewDocumentCallInfo.ArgAt<IEnumerable<KeyValuePair<string, object>>>(0).First(x => x.Key == getCallInfo.ArgAt<string>(0)).Value);
                    return newDocument;
                });
                IDocument document = Substitute.For<IDocument>();
                document.Source.Returns(inputPath.CombineFile("Wyam.Core/IModule.cs"));  // Use file that no longer exists so commit count is stable
                context.GetDocument(Arg.Any<IDocument>(), Arg.Any<IEnumerable<KeyValuePair<string, object>>>()).Returns(x =>
                {
                    IDocument newDocument = Substitute.For<IDocument>();
                    newDocument.GetEnumerator().Returns(x.ArgAt<IEnumerable<KeyValuePair<string, object>>>(1).GetEnumerator());
                    return newDocument;
                });
                GitContributors gitContributors = new GitContributors().ForEachInputDocument();

                // When
                List<IDocument> results = gitContributors.Execute(new[] { document }, context).ToList();  // Make sure to materialize the result list

                // Then
                Assert.AreEqual(1, results.Count);
                List<IDocument> contributors =
                    ((IEnumerable<IDocument>)results[0].First(x => x.Key == GitKeys.Contributors).Value).ToList();
                Dictionary<string, object> contributor = contributors
                    .Single(x => x.String(GitKeys.ContributorEmail) == "*****@*****.**" && x.String(GitKeys.ContributorName) == "Dave Glick")
                    .ToDictionary(x => x.Key, x => x.Value);
                List<Dictionary<string, object>> commits = ((IEnumerable<IDocument>)contributor[GitKeys.Commits])
                    .Select(x => x.ToDictionary(y => y.Key, y => y.Value)).ToList();
                Assert.That(commits.Count, Is.LessThan(10));
                Assert.IsTrue(commits.All(x => (string)x[GitKeys.CommitterEmail] == "*****@*****.**" || (string)x[GitKeys.AuthorEmail] == "*****@*****.**"));
            }