Exemple #1
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);
        }
Exemple #2
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);
        }
Exemple #3
0
 /// <summary>
 /// 種目の一覧を作成します。
 /// </summary>
 /// <returns>種目の一覧。</returns>
 public List <SelectListItem> CreateTennisEvents()
 {
     return(TennisEvent
            .GetAllEvents()
            .Select(o => new SelectListItem(o.Value.DisplayTournamentEvent, o.Key, this.IsSelected(this.SelectedTennisEvents, o.Key)))
            .ToList());
 }
        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);
        }
Exemple #5
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 TennisEvent CreateTennisEvent(string name)
        {
            Guard.WhenArgument(name, "Event name").IsNullOrEmpty().Throw();
            var tennisEvent = new TennisEvent()
            {
                Name = name
            };

            return(tennisEvent);
        }
        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);
        }
Exemple #8
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);
        }
        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
                                 )));
        }
Exemple #10
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);
        }
        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);
        }
Exemple #12
0
        public static void Create(JuniorTennisDbContext context)
        {
            try
            {
                if (context.Tournaments.Any())
                {
                    return;
                }

                for (var i = 0; i < 10; i++)
                {
                    var tournament = new Tournament(
                        new TournamentName($"大阪府代表選考会 {i:000}"),
                        TournamentType.WithDraw,
                        new RegistrationYear(new DateTime(2020, 4, 1)),
                        TypeOfYear.Odd,
                        new AggregationMonth(new DateTime(2020, 8, 1)),
                        TennisEvent.GetAllEvents().Select(o => o.Value).ToList(),
                        new HoldingPeriod(new DateTime(2020, 8, 1), new DateTime(2020, 8, 31)),
                        Enumerable.Range(1, 31)
                        .Select(o => new HoldingDate(new DateTime(2020, 8, o)))
                        .Where(o => o.Value.DayOfWeek == DayOfWeek.Saturday || o.Value.DayOfWeek == DayOfWeek.Sunday)
                        .ToList(),
                        new Venue($"大阪スタジアム {i:000}"),
                        new EntryFee(1000 + i),
                        MethodOfPayment.PrePayment,
                        new ApplicationPeriod(new DateTime(2020, 7, 25), new DateTime(2020, 7, 31)),
                        new Outline($"大会要領 {i:000}"),
                        "",
                        ""
                        );

                    context.Tournaments.Add(tournament);
                }

                context.SaveChanges();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
        }
        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
                                 )));
        }
Exemple #14
0
 /// <summary>
 /// ドロー表の新しいインスタンスを生成します。
 /// </summary>
 /// <param name="tournament">大会。</param>
 /// <param name="tennisEvent">種目。</param>
 /// <param name="tournamentFormat">大会形式。</param>
 /// <param name="eligiblePlayersType">出場対象選手の種別。</param>
 /// <param name="entryDetails">エントリー詳細の一覧。</param>
 /// <param name="mainDrawSettings">本戦のドロー設定。</param>
 /// <param name="qualifyingDrawSettings">予選のドロー設定。</param>
 /// <param name="blocks">ブロックの一覧。</param>
 /// <param name="editStatus">編集状態。</param>
 public DrawTable(
     Tournament tournament,
     TennisEvent tennisEvent,
     TournamentFormat tournamentFormat,
     EligiblePlayersType eligiblePlayersType,
     List <EntryDetail> entryDetails,
     DrawSettings mainDrawSettings,
     DrawSettings qualifyingDrawSettings,
     IEnumerable <Block> blocks,
     EditStatus editStatus)
 {
     this.TournamentId           = tournament.Id;
     this.TennisEventId          = tennisEvent.TennisEventId;
     this.TournamentFormat       = tournamentFormat;
     this.EligiblePlayersType    = eligiblePlayersType;
     this.EntryDetails           = new EntryDetails(entryDetails);
     this.MainDrawSettings       = mainDrawSettings;
     this.QualifyingDrawSettings = qualifyingDrawSettings;
     this.Blocks     = new Blocks(blocks);
     this.EditStatus = editStatus;
 }
        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
                                 )));
        }
Exemple #16
0
        public void 全ての種目一覧を取得()
        {
            var act = TennisEvent.GetAllEvents();

            Assert.Equal(new TennisEvent(Category.Under17Or18, Gender.Boys, Format.Singles),
                         act.Values.First());
            Assert.Equal(new TennisEvent(Category.Under17Or18, Gender.Boys, Format.Doubles),
                         act.Values.Skip(1).First());
            Assert.Equal(new TennisEvent(Category.Under17Or18, Gender.Girls, Format.Singles),
                         act.Values.Skip(2).First());
            Assert.Equal(new TennisEvent(Category.Under17Or18, Gender.Girls, Format.Doubles),
                         act.Values.Skip(3).First());
            Assert.Equal(new TennisEvent(Category.Under15Or16, Gender.Boys, Format.Singles),
                         act.Values.Skip(4).First());
            Assert.Equal(new TennisEvent(Category.Under15Or16, Gender.Boys, Format.Doubles),
                         act.Values.Skip(5).First());
            Assert.Equal(new TennisEvent(Category.Under15Or16, Gender.Girls, Format.Singles),
                         act.Values.Skip(6).First());
            Assert.Equal(new TennisEvent(Category.Under15Or16, Gender.Girls, Format.Doubles),
                         act.Values.Skip(7).First());
            Assert.Equal(new TennisEvent(Category.Under13Or14, Gender.Boys, Format.Singles),
                         act.Values.Skip(8).First());
            Assert.Equal(new TennisEvent(Category.Under13Or14, Gender.Boys, Format.Doubles),
                         act.Values.Skip(9).First());
            Assert.Equal(new TennisEvent(Category.Under13Or14, Gender.Girls, Format.Singles),
                         act.Values.Skip(10).First());
            Assert.Equal(new TennisEvent(Category.Under13Or14, Gender.Girls, Format.Doubles),
                         act.Values.Skip(11).First());
            Assert.Equal(new TennisEvent(Category.Under11Or12, Gender.Boys, Format.Singles),
                         act.Values.Skip(12).First());
            Assert.Equal(new TennisEvent(Category.Under11Or12, Gender.Boys, Format.Doubles),
                         act.Values.Skip(13).First());
            Assert.Equal(new TennisEvent(Category.Under11Or12, Gender.Girls, Format.Singles),
                         act.Values.Skip(14).First());
            Assert.Equal(new TennisEvent(Category.Under11Or12, Gender.Girls, Format.Doubles),
                         act.Values.Skip(15).First());
        }
        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
                                 )));
        }
Exemple #18
0
        public void 種目IDを表示()
        {
            var act = new TennisEvent(Category.Under17Or18, Gender.Boys, Format.Singles);

            Assert.Equal("1_1_1", act.TennisEventId);
        }
Exemple #19
0
        public void 大会種目に表示する種目を表示()
        {
            var act = new TennisEvent(Category.Under17Or18, Gender.Boys, Format.Singles);

            Assert.Equal("17/18歳以下 男子 シングルス", act.DisplayTournamentEvent);
        }
Exemple #20
0
        public void ランキングのカテゴリーで表示する種目を表示()
        {
            var act = new TennisEvent(Category.Under17Or18, Gender.Boys, Format.Singles);

            Assert.Equal("男子 シングルス 17/18歳以下", act.DisplayRankingEvent);
        }
Exemple #21
0
 /// <summary>
 /// 種目の一覧を作成します。
 /// </summary>
 /// <returns>種目の一覧。</returns>
 private List <SelectListItem> CreateTennisEvents() =>
 TennisEvent
 .GetAllEvents()
 .Select(o => new SelectListItem(o.Value.DisplayTournamentEvent, o.Key))
 .ToList();
Exemple #22
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);
        }
Exemple #23
0
 private string CreateTennisEventId(TennisEvent tennisEvents) =>
 $"{tennisEvents.Category.Id}_{tennisEvents.Gender.Id}_{tennisEvents.Format.Id}";
Exemple #24
0
        public async void 大会一覧が開催開始日の降順かつIDの昇順で取得されること()
        {
            var initialData = new List <Tournament>()
            {
                new Tournament(
                    tournamentName: new TournamentName("大会名 001"),
                    tournamentType: TournamentType.WithDraw,
                    registrationYear: new RegistrationYear(new DateTime(2020, 4, 1)),
                    typeOfYear: TypeOfYear.Odd,
                    aggregationMonth: new AggregationMonth(new DateTime(2020, 8, 1)),
                    tennisEvents: TennisEvent.GetAllEvents().Select(o => (o.Value)).ToList(),
                    holdingPeriod: new HoldingPeriod(new DateTime(2020, 8, 2), new DateTime(2020, 8, 31)),
                    holdingDates: new List <HoldingDate>()
                {
                    new HoldingDate(new DateTime(2020, 8, 2))
                },
                    venue: new Venue($"会場名"),
                    entryFee: new EntryFee(1000),
                    methodOfPayment: MethodOfPayment.PrePayment,
                    applicationPeriod: new ApplicationPeriod(new DateTime(2020, 7, 25), new DateTime(2020, 7, 31)),
                    outline: new Outline($"大会要領"),
                    tournamentEntryReceptionMailSubject: "メール件名",
                    tournamentEntryReceptionMailBody: "メール本文"
                    ),
                new Tournament(
                    tournamentName: new TournamentName("大会名 004"),
                    tournamentType: TournamentType.WithDraw,
                    registrationYear: new RegistrationYear(new DateTime(2020, 4, 1)),
                    typeOfYear: TypeOfYear.Odd,
                    aggregationMonth: new AggregationMonth(new DateTime(2020, 8, 1)),
                    tennisEvents: TennisEvent.GetAllEvents().Select(o => (o.Value)).ToList(),
                    holdingPeriod: new HoldingPeriod(new DateTime(2020, 8, 3), new DateTime(2020, 8, 31)),
                    holdingDates: new List <HoldingDate>()
                {
                    new HoldingDate(new DateTime(2020, 8, 3))
                },
                    venue: new Venue($"会場名"),
                    entryFee: new EntryFee(1000),
                    methodOfPayment: MethodOfPayment.PrePayment,
                    applicationPeriod: new ApplicationPeriod(new DateTime(2020, 7, 25), new DateTime(2020, 7, 31)),
                    outline: new Outline($"大会要領"),
                    tournamentEntryReceptionMailSubject: "メール件名",
                    tournamentEntryReceptionMailBody: "メール本文"
                    ),
                new Tournament(
                    tournamentName: new TournamentName("大会名 003"),
                    tournamentType: TournamentType.WithDraw,
                    registrationYear: new RegistrationYear(new DateTime(2020, 4, 1)),
                    typeOfYear: TypeOfYear.Odd,
                    aggregationMonth: new AggregationMonth(new DateTime(2020, 8, 1)),
                    tennisEvents: TennisEvent.GetAllEvents().Select(o => (o.Value)).ToList(),
                    holdingPeriod: new HoldingPeriod(new DateTime(2020, 8, 1), new DateTime(2020, 8, 31)),
                    holdingDates: new List <HoldingDate>()
                {
                    new HoldingDate(new DateTime(2020, 8, 1))
                },
                    venue: new Venue($"会場名"),
                    entryFee: new EntryFee(1000),
                    methodOfPayment: MethodOfPayment.PrePayment,
                    applicationPeriod: new ApplicationPeriod(new DateTime(2020, 7, 25), new DateTime(2020, 7, 31)),
                    outline: new Outline($"大会要領"),
                    tournamentEntryReceptionMailSubject: "メール件名",
                    tournamentEntryReceptionMailBody: "メール本文"
                    ),
                new Tournament(
                    tournamentName: new TournamentName("大会名 002"),
                    tournamentType: TournamentType.WithDraw,
                    registrationYear: new RegistrationYear(new DateTime(2020, 4, 1)),
                    typeOfYear: TypeOfYear.Odd,
                    aggregationMonth: new AggregationMonth(new DateTime(2020, 8, 1)),
                    tennisEvents: TennisEvent.GetAllEvents().Select(o => (o.Value)).ToList(),
                    holdingPeriod: new HoldingPeriod(new DateTime(2020, 8, 3), new DateTime(2020, 8, 31)),
                    holdingDates: new List <HoldingDate>()
                {
                    new HoldingDate(new DateTime(2020, 8, 3))
                },
                    venue: new Venue($"会場名"),
                    entryFee: new EntryFee(1000),
                    methodOfPayment: MethodOfPayment.PrePayment,
                    applicationPeriod: new ApplicationPeriod(new DateTime(2020, 7, 25), new DateTime(2020, 7, 31)),
                    outline: new Outline($"大会要領"),
                    tournamentEntryReceptionMailSubject: "メール件名",
                    tournamentEntryReceptionMailBody: "メール本文"
                    ),
            };

            initialData[0].Id = 1;
            initialData[1].Id = 4;
            initialData[2].Id = 3;
            initialData[3].Id = 2;

            var mockRepository = new Mock <ITournamentRepository>();

            mockRepository.Setup(o => o.Find())
            .ReturnsAsync(initialData)
            .Verifiable();

            var tournamentUseCase    = new TournamentUseCase(mockRepository.Object);
            var mockDrawTableUseCase = new Mock <IDrawTableUseCase>();

            var controller = new DrawTablesController(tournamentUseCase, mockDrawTableUseCase.Object);
            var jsonString = await controller.GetTournaments();

            var json = JsonSerializer
                       .Deserialize <JsonElement>(jsonString)
                       .EnumerateArray()
                       .ToList();

            mockRepository.Verify();
            Assert.Equal("大会名 002", JsonConverter.ToString(json[0].GetProperty("name")));
            Assert.Equal("大会名 004", JsonConverter.ToString(json[1].GetProperty("name")));
            Assert.Equal("大会名 001", JsonConverter.ToString(json[2].GetProperty("name")));
            Assert.Equal("大会名 003", JsonConverter.ToString(json[3].GetProperty("name")));
        }