Пример #1
0
        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);
        }
Пример #2
0
        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>()));
        }
Пример #3
0
        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>()));
        }
Пример #4
0
        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>()));
        }
Пример #5
0
        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>()));
        }
Пример #6
0
        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);
        }