Esempio n. 1
0
        public void 支払い方法によって参加費の表示フラグが正常に切り替わること(int id, bool flag)
        {
            var act = new Tournament(
                new TournamentName("ジュニア選手権"),
                TournamentType.WithDraw,
                new RegistrationYear(new DateTime(2020, 4, 1)),
                TypeOfYear.Odd,
                new AggregationMonth(new DateTime(2020, 6, 1)),
                new List <TennisEvent>()
            {
                TennisEvent.FromId("1_1_1"), TennisEvent.FromId("1_1_2")
            },
                new HoldingPeriod(new DateTime(2020, 6, 10), new DateTime(2020, 6, 20)),
                new List <HoldingDate>()
            {
                new HoldingDate(new DateTime(2020, 6, 12)), new HoldingDate(new DateTime(2020, 6, 13))
            },
                new Venue("日本テニスコート"),
                new EntryFee(100),
                Enumeration.FromValue <MethodOfPayment>(id),
                new ApplicationPeriod(new DateTime(2020, 5, 1), new DateTime(2020, 5, 31)),
                new Outline("大会名:ジュニア選手 権場所:日本テニスコート"),
                "メール件名",
                "メール本文",
                1
                );

            Assert.Equal(flag, act.ShowEntryFee);
        }
Esempio n. 2
0
        public void ポイントのみの大会を正しく取得()
        {
            var act = new Tournament(
                new TournamentName("ジュニア選手権"),
                TournamentType.OnlyPoints,
                new RegistrationYear(new DateTime(2020, 4, 1)),
                TypeOfYear.Odd,
                new AggregationMonth(new DateTime(2020, 6, 1)),
                new List <TennisEvent>()
            {
                TennisEvent.FromId("1_1_1"), TennisEvent.FromId("1_1_2")
            },
                1
                );

            Assert.Equal("ジュニア選手権", act.TournamentName.Value);
            Assert.Equal(TournamentType.OnlyPoints, act.TournamentType);
            Assert.Equal(new DateTime(2020, 4, 1), act.RegistrationYear.Value);
            Assert.Equal(TypeOfYear.Odd, act.TypeOfYear);
            Assert.Equal(new DateTime(2020, 6, 1), act.AggregationMonth.Value);
            Assert.Equal(new List <TennisEvent>()
            {
                TennisEvent.FromId("1_1_1"), TennisEvent.FromId("1_1_2")
            }, act.TennisEvents);
        }
Esempio n. 3
0
        public async Task ポイントのみ大会を更新する()
        {
            // Arrange
            var dto = new UpdateTournamentDto()
            {
                TournamentId     = 1,
                TournamentName   = "ジュニア選手権",
                TournamentType   = TournamentType.OnlyPoints.Id,
                RegistrationYear = new DateTime(2020, 4, 1),
                TypeOfYear       = TypeOfYear.Odd.Id,
                AggregationMonth = new DateTime(2020, 6, 1),
                TennisEvents     = new List <(int, int, int)>()
                {
                    (1, 1, 1), (1, 1, 2)
                },
                HoldingStartDate = new DateTime(2020, 6, 10),
                HoldingEndDate   = new DateTime(2020, 6, 20),
                HoldingDates     = new List <DateTime>()
                {
                    new DateTime(2020, 6, 12), new DateTime(2020, 6, 13)
                },
                Venue                = "日本テニスコート",
                EntryFee             = 100,
                MethodOfPayment      = MethodOfPayment.PrePayment.Id,
                ApplicationStartDate = new DateTime(2020, 5, 1),
                ApplicationEndDate   = new DateTime(2020, 5, 31),
                Outline              = "大会名:ジュニア選手権場所:日本テニスコート",
                TournamentEntryReceptionMailSubject = "メール件名",
                TournamentEntryReceptionMailBody    = "メール本文",
            };

            var tournament = new Tournament(
                new TournamentName("ジュニア選手権"),
                TournamentType.OnlyPoints,
                new RegistrationYear(new DateTime(2020, 4, 1)),
                TypeOfYear.Odd,
                new AggregationMonth(new DateTime(2020, 6, 1)),
                new List <TennisEvent>()
            {
                TennisEvent.FromId("1_1_1"), TennisEvent.FromId("1_1_2")
            },
                1
                );

            var mockRepository = new Mock <ITournamentRepository>();

            mockRepository.Setup(r => r.Update(It.Is <Tournament>(o => o.TournamentType == TournamentType.OnlyPoints)))
            .ReturnsAsync(tournament)
            .Verifiable();
            var usecase = new TournamentUseCase(mockRepository.Object);

            // Act
            var act = await usecase.UpdateTournament(dto);

            // Assert
            mockRepository.Verify();
            Assert.Equal(TournamentType.OnlyPoints, act.TournamentType);
            Assert.Equal(1, act.Id);
        }
Esempio n. 4
0
        public void 種目Idから種目を設定する()
        {
            var tennisEvent = TennisEvent.FromId("1_1_1");

            Assert.Equal(Category.Under17Or18, tennisEvent.Category);
            Assert.Equal(Gender.Boys, tennisEvent.Gender);
            Assert.Equal(Format.Singles, tennisEvent.Format);
        }
        public async void 大会の詳細画面を表示()
        {
            // Arrange
            var id = 000001;
            var holdingPeriodStartDate = new DateTime(2020, 6, 10);
            var holdingPeriodEndDate   = new DateTime(2020, 6, 20);
            var tournament             = new Tournament(
                new TournamentName("ジュニア選手権"),
                TournamentType.WithDraw,
                new RegistrationYear(new DateTime(2020, 4, 1)),
                TypeOfYear.Odd,
                new AggregationMonth(new DateTime(2020, 6, 1)),
                new List <TennisEvent>()
            {
                TennisEvent.FromId("1_1_1"), TennisEvent.FromId("1_1_2")
            },
                new HoldingPeriod(holdingPeriodStartDate, holdingPeriodEndDate),
                new List <HoldingDate>()
            {
                new HoldingDate(new DateTime(2020, 6, 12)), new HoldingDate(new DateTime(2020, 6, 13))
            },
                new Venue("日本テニスコート"),
                new EntryFee(100),
                MethodOfPayment.PrePayment,
                new ApplicationPeriod(new DateTime(2020, 5, 1), new DateTime(2020, 5, 31)),
                new Outline("大会名:ジュニア選手 権場所:日本テニスコート"),
                "メール件名",
                "メール本文",
                1);

            var holdingDates = new List <JsonHoldingDate>()
            {
                new JsonHoldingDate(new DateTime(2020, 03, 30), true)
            };
            var mockUseCase = new Mock <ITournamentUseCase>();

            mockUseCase.Setup(m => m.GetTournament(id))
            .ReturnsAsync(tournament)
            .Verifiable();
            mockUseCase.Setup(m => m.CreateHoldingDates(holdingPeriodStartDate, holdingPeriodEndDate))
            .Returns(holdingDates)
            .Verifiable();
            var controller = new TournamentsController(mockUseCase.Object);

            // Act
            var result = await controller.Details(id);

            // Assert
            mockUseCase.Verify();
            var viewResult = Assert.IsType <ViewResult>(result);
            var model      = Assert.IsAssignableFrom <DetailsViewModel>(viewResult.ViewData.Model);
        }
Esempio n. 6
0
        public void 大会を正しく取得()
        {
            var act = new Tournament(
                new TournamentName("ジュニア選手権"),
                TournamentType.WithDraw,
                new RegistrationYear(new DateTime(2020, 4, 1)),
                TypeOfYear.Odd,
                new AggregationMonth(new DateTime(2020, 6, 1)),
                new List <TennisEvent>()
            {
                TennisEvent.FromId("1_1_1"), TennisEvent.FromId("1_1_2")
            },
                new HoldingPeriod(new DateTime(2020, 6, 10), new DateTime(2020, 6, 20)),
                new List <HoldingDate>()
            {
                new HoldingDate(new DateTime(2020, 6, 12)), new HoldingDate(new DateTime(2020, 6, 13))
            },
                new Venue("日本テニスコート"),
                new EntryFee(100),
                MethodOfPayment.PrePayment,
                new ApplicationPeriod(new DateTime(2020, 5, 1), new DateTime(2020, 5, 31)),
                new Outline("大会名:ジュニア選手 権場所:日本テニスコート"),
                "メール件名",
                "メール本文",
                1
                );

            Assert.Equal("ジュニア選手権", act.TournamentName.Value);
            Assert.Equal(TournamentType.WithDraw, act.TournamentType);
            Assert.Equal(new DateTime(2020, 4, 1), act.RegistrationYear.Value);
            Assert.Equal(TypeOfYear.Odd, act.TypeOfYear);
            Assert.Equal(new DateTime(2020, 6, 1), act.AggregationMonth.Value);
            Assert.Equal(new List <TennisEvent>()
            {
                TennisEvent.FromId("1_1_1"), TennisEvent.FromId("1_1_2")
            }, act.TennisEvents);
            Assert.Equal(new DateTime(2020, 6, 10), act.HoldingPeriod.StartDate);
            Assert.Equal(new DateTime(2020, 6, 20), act.HoldingPeriod.EndDate);
            Assert.Equal(new List <HoldingDate>()
            {
                new HoldingDate(new DateTime(2020, 6, 12)), new HoldingDate(new DateTime(2020, 6, 13))
            },
                         act.HoldingDates);
            Assert.Equal("日本テニスコート", act.Venue.Value);
            Assert.Equal(100, act.EntryFee.Value);
            Assert.Equal(MethodOfPayment.PrePayment, act.MethodOfPayment);
            Assert.Equal(new DateTime(2020, 5, 1), act.ApplicationPeriod.StartDate);
            Assert.Equal(new DateTime(2020, 5, 31), act.ApplicationPeriod.EndDate);
            Assert.Equal("大会名:ジュニア選手 権場所:日本テニスコート", act.Outline.Value);
            Assert.Equal("メール件名", act.TournamentEntryReceptionMailSubject);
            Assert.Equal("メール本文", act.TournamentEntryReceptionMailBody);
        }
Esempio n. 7
0
        public async Task <ActionResult> Results(int tournamentId, string tennisEventId)
        {
            this.ViewData["Action"] = "Results";
            var tournament = await this.tournamentUseCase.GetTournament(tournamentId);

            var tennisEvent = TennisEvent.FromId(tennisEventId);

            return(this.View(new ResultsViewModel(
                                 $"{tournament.Id}",
                                 tournament.TournamentName.Value,
                                 tennisEvent.TennisEventId,
                                 tennisEvent.DisplayTournamentEvent,
                                 tennisEvent.IsSingles
                                 )));
        }
Esempio n. 8
0
        public async void 大会開催期間と申込期間と種目一覧を取得する()
        {
            // Arrange
            var tournamentId = 1;
            var tournament   = new Tournament(
                new TournamentName("ジュニア選手権"),
                TournamentType.WithDraw,
                new RegistrationYear(new DateTime(2020, 4, 1)),
                TypeOfYear.Odd,
                new AggregationMonth(new DateTime(2020, 6, 1)),
                new List <TennisEvent>()
            {
                TennisEvent.FromId("1_1_1"), TennisEvent.FromId("1_1_2")
            },
                new HoldingPeriod(new DateTime(2020, 6, 10), new DateTime(2020, 6, 20)),
                new List <HoldingDate>()
            {
                new HoldingDate(new DateTime(2020, 6, 12)), new HoldingDate(new DateTime(2020, 6, 13))
            },
                new Venue("日本テニスコート"),
                new EntryFee(100),
                MethodOfPayment.PrePayment,
                new ApplicationPeriod(new DateTime(2020, 5, 1), new DateTime(2020, 5, 31)),
                new Outline("大会名:ジュニア選手権場所:日本テニスコート"),
                "メール件名",
                "メール本文",
                tournamentId
                );

            var mockRepository = new Mock <ITournamentRepository>();

            mockRepository.Setup(r => r.FindById(tournamentId))
            .ReturnsAsync(tournament)
            .Verifiable();
            var useCase = new TournamentEntryUseCase(mockRepository.Object);

            // Act
            var act = await useCase.GetSelectedTournament(tournamentId);

            // Assert
            mockRepository.Verify();
            Assert.Equal("17/18歳以下 男子 シングルス", act.TennisEvents[0].Name);
            Assert.Equal("17/18歳以下 男子 ダブルス", act.TennisEvents[1].Name);
            Assert.Equal("2020年6月10日 ~ 2020年6月20日", act.HoldingPeriod);
            Assert.Equal("2020年5月1日 ~ 2020年5月31日", act.ApplicationPeriod);
        }
Esempio n. 9
0
        public async Task 大会IDを指定し大会取得()
        {
            // Arrange
            var id         = 100000;
            var tournament = new Tournament(
                new TournamentName("ジュニア選手権"),
                TournamentType.WithDraw,
                new RegistrationYear(new DateTime(2020, 4, 1)),
                TypeOfYear.Odd,
                new AggregationMonth(new DateTime(2020, 6, 1)),
                new List <TennisEvent>()
            {
                TennisEvent.FromId("1_1_1"), TennisEvent.FromId("1_1_2")
            },
                new HoldingPeriod(new DateTime(2020, 6, 10), new DateTime(2020, 6, 20)),
                new List <HoldingDate>()
            {
                new HoldingDate(new DateTime(2020, 6, 12)), new HoldingDate(new DateTime(2020, 6, 13))
            },
                new Venue("日本テニスコート"),
                new EntryFee(100),
                MethodOfPayment.PrePayment,
                new ApplicationPeriod(new DateTime(2020, 5, 1), new DateTime(2020, 5, 31)),
                new Outline("大会名:ジュニア選手 権場所:日本テニスコート"),
                "メール件名",
                "メール本文",
                100000
                );

            var mockRepository = new Mock <ITournamentRepository>();

            mockRepository.Setup(r => r.FindById(id))
            .ReturnsAsync(tournament)
            .Verifiable();
            var usecase = new TournamentUseCase(mockRepository.Object);

            // Act
            var act = await usecase.GetTournament(id);

            // Assert
            mockRepository.Verify();
            Assert.Equal(id, act.Id);
        }
Esempio n. 10
0
        public async Task <ActionResult> Create(int tournamentId, string tennisEventId)
        {
            this.ViewData["Action"] = "Create";
            var tournament = await this.tournamentUseCase.GetTournament(tournamentId);

            var tennisEvent = TennisEvent.FromId(tennisEventId);
            var dto         = new DrawTableRepositoryDto(tournamentId, tennisEventId);
            var drawTable   = await this.drawTableUseCase.GetDrawTable(dto);

            var useQualifyingMenu = drawTable.TournamentFormat == TournamentFormat.WithQualifying;

            return(this.View(new CreateViewModel(
                                 $"{tournament.Id}",
                                 tournament.TournamentName.Value,
                                 tennisEvent.TennisEventId,
                                 tennisEvent.DisplayTournamentEvent,
                                 tournament.HoldingDates.Select(o => o.DisplayValue),
                                 useQualifyingMenu,
                                 tennisEvent.IsSingles
                                 )));
        }
Esempio n. 11
0
        public async Task <ActionResult> Settings(int tournamentId, string tennisEventId)
        {
            this.ViewData["Action"] = "Settings";
            var tournament = await this.tournamentUseCase.GetTournament(tournamentId);

            var tennisEvent = TennisEvent.FromId(tennisEventId);
            var dto         = new DrawTableRepositoryDto(tournamentId, tennisEventId)
            {
                IncludeEntryDetails           = true,
                IncludeQualifyingDrawSettings = true,
                IncludeMainDrawSettings       = true,
            };
            var drawTable = await this.drawTableUseCase.GetDrawTable(dto);

            return(this.View(new SettingsViewModel(
                                 $"{tournament.Id}",
                                 tournament.TournamentName.Value,
                                 tennisEvent.TennisEventId,
                                 tennisEvent.DisplayTournamentEvent,
                                 drawTable
                                 )));
        }
Esempio n. 12
0
        public async Task <ActionResult> Players(int tournamentId, string tennisEventId)
        {
            this.ViewData["Action"] = "Players";
            var tournament = await this.tournamentUseCase.GetTournament(tournamentId);

            var tennisEvent = TennisEvent.FromId(tennisEventId);
            var dto         = new DrawTableRepositoryDto(tournamentId, tennisEventId)
            {
                IncludeEntryDetails = true,
            };
            var drawTable = await this.drawTableUseCase.GetDrawTable(dto);

            var useQualifyingMenu = drawTable.TournamentFormat == TournamentFormat.WithQualifying;

            return(this.View(new PlayerViewModel(
                                 $"{tournament.Id}",
                                 tournament.TournamentName.Value,
                                 tennisEvent.TennisEventId,
                                 tennisEvent.DisplayTournamentEvent,
                                 drawTable.EligiblePlayersType.Id,
                                 tournament.HoldingDates.Select(o => o.DisplayValue),
                                 useQualifyingMenu
                                 )));
        }
Esempio n. 13
0
        public async void 申込期間中の大会名と大会IDを取得する()
        {
            // Arrange
            var tournaments = new List <Tournament>()
            {
                new Tournament(
                    new TournamentName("ジュニア選手権1"),
                    TournamentType.WithDraw,
                    new RegistrationYear(new DateTime(2020, 4, 1)),
                    TypeOfYear.Odd,
                    new AggregationMonth(new DateTime(2020, 6, 1)),
                    new List <TennisEvent>()
                {
                    TennisEvent.FromId("1_1_1"), TennisEvent.FromId("1_1_2")
                },
                    new HoldingPeriod(DateTime.Today.AddMonths(2), DateTime.Today.AddMonths(3)),
                    new List <HoldingDate>()
                {
                    new HoldingDate(DateTime.Today.AddMonths(2).AddDays(1)), new HoldingDate(DateTime.Today.AddMonths(2).AddDays(2))
                },
                    new Venue("日本テニスコート"),
                    new EntryFee(100),
                    MethodOfPayment.PrePayment,
                    new ApplicationPeriod(DateTime.Today, DateTime.Today.AddMonths(1)),
                    new Outline("大会名:ジュニア選手 権場所:日本テニスコート"),
                    "メール件名",
                    "メール本文",
                    1
                    ),

                new Tournament(
                    new TournamentName("ジュニア選手権1"),
                    TournamentType.WithDraw,
                    new RegistrationYear(new DateTime(2020, 4, 1)),
                    TypeOfYear.Odd,
                    new AggregationMonth(new DateTime(2020, 6, 1)),
                    new List <TennisEvent>()
                {
                    TennisEvent.FromId("1_1_1"), TennisEvent.FromId("1_1_2")
                },
                    new HoldingPeriod(DateTime.Today.AddMonths(2).AddDays(1), DateTime.Today.AddMonths(3)),
                    new List <HoldingDate>()
                {
                    new HoldingDate(DateTime.Today.AddMonths(2).AddDays(2)), new HoldingDate(DateTime.Today.AddMonths(2).AddDays(3))
                },
                    new Venue("日本テニスコート"),
                    new EntryFee(100),
                    MethodOfPayment.PrePayment,
                    new ApplicationPeriod(DateTime.Today.AddMonths(-1), DateTime.Today),
                    new Outline("大会名:ジュニア選手 権場所:日本テニスコート"),
                    "メール件名",
                    "メール本文",
                    2
                    ),

                new Tournament(
                    new TournamentName("ジュニア選手権1"),
                    TournamentType.WithDraw,
                    new RegistrationYear(new DateTime(2020, 4, 1)),
                    TypeOfYear.Odd,
                    new AggregationMonth(new DateTime(2020, 6, 1)),
                    new List <TennisEvent>()
                {
                    TennisEvent.FromId("1_1_1"), TennisEvent.FromId("1_1_2")
                },
                    new HoldingPeriod(DateTime.Today.AddMonths(2), DateTime.Today.AddMonths(3)),
                    new List <HoldingDate>()
                {
                    new HoldingDate(DateTime.Today.AddMonths(2).AddDays(1)), new HoldingDate(DateTime.Today.AddMonths(2).AddDays(2))
                },
                    new Venue("日本テニスコート"),
                    new EntryFee(100),
                    MethodOfPayment.PrePayment,
                    new ApplicationPeriod(DateTime.Today.AddMonths(-2), DateTime.Today.AddMonths(-1)),
                    new Outline("大会名:ジュニア選手 権場所:日本テニスコート"),
                    "メール件名",
                    "メール本文",
                    3
                    )
            };

            var mockRepository = new Mock <ITournamentRepository>();

            mockRepository.Setup(r => r.Find())
            .ReturnsAsync(tournaments)
            .Verifiable();
            var useCase = new TournamentEntryUseCase(mockRepository.Object);

            // Act
            var act = await useCase.GetApplicationTournaments();

            // Assert
            mockRepository.Verify();
            Assert.Equal(2, act.Count);
            Assert.Equal("2", act[0].Id);
            Assert.Equal("1", act[1].Id);
        }