public void PrintsEveryAuthorOnCallingTop()
        {
            var organization = "organization";
            var author1      = new FakeAuthor(organization, "repo", "email1");
            var author2      = new FakeAuthor(organization, "repo", "email1");
            var authors      = new List <Author> {
                author1, author2
            };
            var work  = new FakeWork(1u, author1);
            var works = new List <Work> {
                work
            };
            var rating1 = new FakeRating(100, work, author1);
            var rating2 = new FakeRating(150, work, author2);
            var ratings = new List <Rating> {
                rating1, rating2
            };
            var database = new FakeDatabase(
                new FakeDbInstance(),
                new FakeEntities(
                    new FakeWorks(ratings, works, authors),
                    new FakeRatings(ratings, works, authors),
                    new FakeAuthors(authors)
                    )
                );

            var lines = new List <string>();

            new ConsoleApplication(database, new EloFormula()).Top(new FakeOutput(lines), organization, "repo");

            var headers = 2;

            Assert.Equal(authors.Count, lines.Count - headers);
        }
Beispiel #2
0
        public void InsertsOldAuthorNewRatingWhenDeleteOneNewVictim()
        {
            var organization = "organization";
            var repository   = "repository";
            var author       = new FakeAuthor(organization, repository, "old author");
            var victim       = "single new victim";
            var work         = new FakeWork(10u, author);
            var rating       = new FakeRating(1500d, work, author);
            var ratings      = new List <Rating> {
                rating
            };
            var formula  = new FakeFormula(10, 1);
            var deletion = new DefaultDeletion(victim, 2);
            var newWork  = new FakeWork(0u, author);

            new DefaultEntityFactory(
                new FakeEntities(
                    new List <Work> {
                work, newWork
            },
                    new List <Author> {
                author
            },
                    ratings
                    ),
                formula
                )
            .InsertRatings(
                organization,
                repository,
                author.Email(),
                new[] { deletion },
                newWork.Id(),
                DateTimeOffset.UtcNow
                );

            bool RatingOfAuthor(Rating r)
            {
                return(r.Author().Email().Equals(author !.Email()));
            }

            Assert.Equal(
                formula.WinnerNewRating(
                    rating.Value(),
                    new[]
            {
                new DefaultMatch(formula.DefaultRating(), deletion.Counted())
            }
                    ),
                ratings.Last(RatingOfAuthor).Value()
                );
        }
Beispiel #3
0
        public void InsertsNewWorkWithUsedRating()
        {
            var organization = "organization";
            var repository   = "repository";
            var author       = new FakeAuthor(organization, repository, "the author");
            var work         = new FakeWork(10u, author);
            var rating       = new FakeRating(1500d, work, author);
            var works        = new List <Work> {
                work
            };

            new DefaultEntityFactory(
                new FakeEntities(
                    works,
                    new List <Author> {
                author
            },
                    new List <Rating> {
                rating
            }
                    ),
                new FakeFormula()
                )
            .InsertedWork(
                organization,
                repository,
                "start",
                "end",
                null,
                author.Email(),
                0u,
                null,
                DateTimeOffset.UtcNow);

            Assert.Equal(rating, works.Last().UsedRating());
        }