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); }
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() ); }
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()); }