static void Main(string[] args) { Config.Load(args); var id_provider = new IdProvider(); var date_provider = new DateProvider(); var person_repo = new PersonRepository(Config.DbPath); var tournament_repo = new TournamentRepository(Config.DbPath); var director = new TournamentDirector(id_provider); var personStockQueryHandler = new PersonStockQueryHandler(person_repo); var newPersonQueryHandler = new NewPersonQueryHandler(id_provider); var storePersonCommandHandler = new StorePersonCommandHandler(person_repo); var createTournamentCommandHandler = new CreateTournamentCommandHandler(tournament_repo, person_repo, id_provider, date_provider, director); var tournamentQueryHandler = new TournamentQueryHandler(tournament_repo); var tournamentsInfoQueryHandler = new TournamentStockQueryHandler(tournament_repo); var server = new Server(personStockQueryHandler, newPersonQueryHandler, storePersonCommandHandler, createTournamentCommandHandler, tournamentQueryHandler, tournamentsInfoQueryHandler); server.Run(Config.Address); }
public async Task Handle_GivenNullRequest_ShouldThrowArgumentNullException() { // Arrange var sut = new CreateTournamentCommandHandler(It.IsAny <IDeletableEntityRepository <Tournament> >(), It.IsAny <IDeletableEntityRepository <TournamentFormat> >(), It.IsAny <ICloudinaryHelper>(), It.IsAny <IMediator>()); // Act & Arrange await Should.ThrowAsync <ArgumentNullException>(sut.Handle(null, It.IsAny <CancellationToken>())); }
public async Task Handle_GivenInvalidRequest_ShouldThroTournamentActiveDateMustStartOnMondayException() { // Arrange var command = new CreateTournamentCommand { StartDate = new DateTime(2019, 01, 01) }; var sut = new CreateTournamentCommandHandler(It.IsAny <IDeletableEntityRepository <Tournament> >(), It.IsAny <IDeletableEntityRepository <TournamentFormat> >(), It.IsAny <ICloudinaryHelper>(), It.IsAny <IMediator>()); // Act & Assert await Should.ThrowAsync <TournamentActiveDateMustStartOnMondayException>(sut.Handle(command, It.IsAny <CancellationToken>())); }
public async Task Handle_GivenInvalidRequest_ShouldThrowEntityAlreadyExistsException() { // Arrange var command = new CreateTournamentCommand { Name = "TestTournament1", StartDate = new DateTime(2019, 08, 12), }; var sut = new CreateTournamentCommandHandler(this.deletableEntityRepository, It.IsAny <IDeletableEntityRepository <TournamentFormat> >(), It.IsAny <ICloudinaryHelper>(), It.IsAny <IMediator>()); // Act & Assert await Should.ThrowAsync <EntityAlreadyExistsException>(sut.Handle(command, It.IsAny <CancellationToken>())); }
public async Task Handle_GivenInvalidRequest_ShouldThrowNotFoundException() { // Arrange var command = new CreateTournamentCommand { FormatId = 131341, StartDate = new DateTime(2019, 08, 12), }; var tournamentFormatsRepository = new EfDeletableEntityRepository <TournamentFormat>(this.dbContext); var sut = new CreateTournamentCommandHandler(this.deletableEntityRepository, tournamentFormatsRepository, It.IsAny <ICloudinaryHelper>(), It.IsAny <IMediator>()); // Act & Assert await Should.ThrowAsync <NotFoundException>(sut.Handle(command, It.IsAny <CancellationToken>())); }
public async Task Handle_GivenValidRequest_ShouldCreateEntity() { // Arrange var cloudinaryHelperMock = new Mock <ICloudinaryHelper>(); var cloudinaryMock = new Mock <Cloudinary>(); var imagePlaceholderUrl = "https://steamcdn-a.akamaihd.net/steam/apps/440/header.jpg"; cloudinaryHelperMock .Setup(x => x.UploadImage(It.IsAny <IFormFile>(), It.IsAny <string>(), It.IsAny <Transformation>())) .ReturnsAsync(imagePlaceholderUrl); var tournamentFormatsRepository = new EfDeletableEntityRepository <TournamentFormat>(this.dbContext); var command = new CreateTournamentCommand { Name = "ValidTournament", Description = "ValidDescription", StartDate = new DateTime(2019, 08, 12), EndDate = new DateTime(2019, 09, 08), FormatId = 1, TournamentImage = It.IsAny <IFormFile>() }; var sut = new CreateTournamentCommandHandler(this.deletableEntityRepository, tournamentFormatsRepository, cloudinaryHelperMock.Object, this.mediatorMock.Object); // Act var id = await sut.Handle(command, It.IsAny <CancellationToken>()); // Assert id.ShouldBeGreaterThan(0); var createdTournament = this.deletableEntityRepository.AllAsNoTracking().FirstOrDefault(x => x.Id == id); createdTournament.Name.ShouldBe("ValidTournament"); createdTournament.Description.ShouldBe("ValidDescription"); createdTournament.EndDate.Month.ShouldBe(9); }