public void 登録年度から集計月度一覧をJSON形式で取得する()
 {
     // Arrange
     var registrationYear  = "2020";
     var mockUseCase       = new Mock <ITournamentUseCase>();
     var controller        = new TournamentsController(mockUseCase.Object);
     var registrationYears = @$ "
        public void 大会登録画面を表示()
        {
            // Arrange
            var mailTemplate = new Dictionary <string, string>()
            {
                { "PrePayment", "メール内容" },
                { "PostPayment", "メール内容" },
                { "NotRecieve", "メール内容" },
                { "Other", "メール内容" }
            };
            var mockUseCase = new Mock <ITournamentUseCase>();

            mockUseCase.Setup(m => m.GetTournamentEntryReceptionMailBodies())
            .Returns(mailTemplate)
            .Verifiable();
            var controller = new TournamentsController(mockUseCase.Object);

            // Act
            var result = controller.Register();

            // Assert
            mockUseCase.Verify();
            var viewResult = Assert.IsType <ViewResult>(result);
            var model      = Assert.IsAssignableFrom <RegisterViewModel>(viewResult.ViewData.Model);

            Assert.Equal(mailTemplate, model.TournamentEntryReceptionMailBodies);
        }
        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);
        }
        public async void 大会が削除される()
        {
            // Arrange
            var id          = 000001;
            var mockUseCase = new Mock <ITournamentUseCase>();
            var controller  = new TournamentsController(mockUseCase.Object);

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

            // Assert
            mockUseCase.Verify(m => m.DeleteTournament(It.IsAny <int>()), Times.Once());
            var redirectToActionResult = Assert.IsType <RedirectToActionResult>(result);

            Assert.Null(redirectToActionResult.ControllerName);
            Assert.Equal(nameof(controller.Index), redirectToActionResult.ActionName);
        }
        public async void 大会を更新する()
        {
            // Arrange
            var viewModel = new EditViewModel()
            {
                TournamentId             = 000001,
                TournamentName           = "ジュニア選手権",
                SelectedTournamentType   = TournamentType.WithDraw.Id.ToString(),
                SelectedRegistrationYear = "2020/4/1",
                SelectedTypeOfYear       = TypeOfYear.Odd.Id.ToString(),
                SelectedAggregationMonth = "2020/6/1",
                SelectedTennisEvents     = new List <string>()
                {
                    "1_1_1", "1_1_2"
                },
                HoldingStartDate     = new DateTime(2020, 6, 10),
                HoldingEndDate       = new DateTime(2020, 6, 20),
                SelectedHoldingDates = new List <string>()
                {
                    "2020/6/12", "2020/6/13"
                },
                Venue    = "日本テニスコート",
                EntryFee = 100,
                SelectedMethodOfPayments = MethodOfPayment.PrePayment.Id.ToString(),
                ApplicationStartDate     = new DateTime(2020, 5, 1),
                ApplicationEndDate       = new DateTime(2020, 5, 31),
                Outline = "大会名:ジュニア選手 権場所:日本テニスコート",
                TournamentEntryReceptionMailSubject = "メール件名",
                TournamentEntryReceptionMailBody    = "メール本文",
            };

            var mockUseCase = new Mock <ITournamentUseCase>();
            var controller  = new TournamentsController(mockUseCase.Object);

            // Act
            var result = await controller.Edit(viewModel);

            // Assert
            mockUseCase.Verify(m => m.UpdateTournament(It.IsAny <UpdateTournamentDto>()), Times.Once());
            var redirectToActionResult = Assert.IsType <RedirectToActionResult>(result);

            Assert.Null(redirectToActionResult.ControllerName);
            Assert.Equal(nameof(controller.Details), redirectToActionResult.ActionName);
        }
        public async Task TestCreateTournamentWhitValidsMoviesAndReturnsCreated()
        {
            // Arrange
            var model    = new CreateTournamentViewModelBuilder().Build();
            var expected = new Response <string>(true, "Successfully created tournament", "12345");

            _tournamentServiceMock.Setup(x => x.CreateAsync(model))
            .Returns(Task.FromResult(expected));

            var controller = new TournamentsController(_tournamentServiceMock.Object);
            // Act
            var actionResult = await controller.PostAsync(model);

            //Assert
            var createdRequestResult = Assert.IsType <CreatedResult>(actionResult.Result);

            createdRequestResult.StatusCode.Should().Be((int)HttpStatusCode.Created);
            var result = Assert.IsType <Response <string> >(createdRequestResult.Value);

            result.Should().BeEquivalentTo(expected);
        }
        public async Task TestCreateTournamentWhitUnavailableServiceMoviesAndReturnsBadRequest()
        {
            // Arrange
            var model    = new CreateTournamentViewModelBuilder().Build();
            var expected = new Response <string>(false, "Error connecting to the movie service");

            _tournamentServiceMock.Setup(x => x.CreateAsync(model))
            .Returns(Task.FromResult(expected));

            var controller = new TournamentsController(_tournamentServiceMock.Object);
            // Act
            var actionResult = await controller.PostAsync(model);

            //Assert
            var badRequestResult = Assert.IsType <BadRequestObjectResult>(actionResult.Result);

            badRequestResult.StatusCode.Should().Be((int)HttpStatusCode.BadRequest);
            var result = Assert.IsType <Response <string> >(badRequestResult.Value);

            result.Should().BeEquivalentTo(expected);
        }
        public async void 大会一覧を表示()
        {
            var mockUseCase = new Mock <ITournamentUseCase>();
            var tournaments = new List <Tournament>()
            {
                new Tournament(new TournamentName("大会0"), TournamentType.OnlyPoints, new RegistrationYear(DateTime.Now), TypeOfYear.Evem, new AggregationMonth(DateTime.Now), new List <TennisEvent>()
                {
                    new TennisEvent(Category.Under11Or12, Gender.Boys, Format.Doubles)
                }),
                new Tournament(new TournamentName("大会1"), TournamentType.OnlyPoints, new RegistrationYear(DateTime.Now), TypeOfYear.Evem, new AggregationMonth(DateTime.Now), new List <TennisEvent>()
                {
                    new TennisEvent(Category.Under11Or12, Gender.Boys, Format.Doubles)
                }),
                new Tournament(new TournamentName("大会2"), TournamentType.OnlyPoints, new RegistrationYear(DateTime.Now), TypeOfYear.Evem, new AggregationMonth(DateTime.Now), new List <TennisEvent>()
                {
                    new TennisEvent(Category.Under11Or12, Gender.Boys, Format.Doubles)
                }),
                new Tournament(new TournamentName("大会3"), TournamentType.OnlyPoints, new RegistrationYear(DateTime.Now), TypeOfYear.Evem, new AggregationMonth(DateTime.Now), new List <TennisEvent>()
                {
                    new TennisEvent(Category.Under11Or12, Gender.Boys, Format.Doubles)
                }),
                new Tournament(new TournamentName("大会4"), TournamentType.OnlyPoints, new RegistrationYear(DateTime.Now), TypeOfYear.Evem, new AggregationMonth(DateTime.Now), new List <TennisEvent>()
                {
                    new TennisEvent(Category.Under11Or12, Gender.Boys, Format.Doubles)
                }),
            };

            mockUseCase.Setup(m => m.GetTournaments())
            .ReturnsAsync(tournaments)
            .Verifiable();
            var controller = new TournamentsController(mockUseCase.Object);

            var result = await controller.Index();

            mockUseCase.Verify();
            var viewResult = Assert.IsType <ViewResult>(result);
            var model      = Assert.IsAssignableFrom <IndexViewModel>(viewResult.ViewData.Model);

            Assert.Equal(5, model.Tournaments.Count);
        }
        public void TournamentsControllerGet()
        {
            // Arrange
            Mock <ITournamentRepository> _mockTournamentRepository = new Mock <ITournamentRepository>();

            _mockTournamentRepository.Setup(x => x.Retrieve()).Returns(new List <Tournament> {
                new Tournament {
                    Name = "Hello", TournamentId = 1
                },
                new Tournament {
                    Name = "Tournament 2", TournamentId = 2
                }
            });
            TournamentsController controller = new TournamentsController(_mockTournamentRepository.Object);

            // Act
            IHttpActionResult result = controller.Get() as IHttpActionResult;

            // Assert
            Assert.IsNotNull(result);
            //Assert.AreEqual(2, result.Count());
            //Assert.AreEqual("value1", result.ElementAt(0));
            //Assert.AreEqual("value2", result.ElementAt(1));
        }
Beispiel #10
0
 public void Init()
 {
     _uow.SetupGet(u => u.Tournaments).Returns(_tournamentRepo.Object);
     _controller = new TournamentsController(_uow.Object);
 }
        public async void 大会編集時無効な値の場合再表示()
        {
            // Arrange
            var viewModel = new EditViewModel()
            {
                TournamentId             = 000001,
                TournamentName           = "ジュニア選手権",
                SelectedTournamentType   = TournamentType.WithDraw.Id.ToString(),
                SelectedRegistrationYear = "2020/4/1",
                SelectedTypeOfYear       = TypeOfYear.Odd.Id.ToString(),
                SelectedAggregationMonth = "2020/6/1",
                SelectedTennisEvents     = new List <string>()
                {
                    "1_1_1", "1_1_2"
                },
                HoldingStartDate     = new DateTime(2020, 6, 10),
                HoldingEndDate       = new DateTime(2020, 6, 20),
                SelectedHoldingDates = new List <string>()
                {
                    "2020/6/12", "2020/6/13"
                },
                Venue    = "日本テニスコート",
                EntryFee = 100,
                SelectedMethodOfPayments = MethodOfPayment.PrePayment.Id.ToString(),
                ApplicationStartDate     = new DateTime(2020, 5, 1),
                ApplicationEndDate       = new DateTime(2020, 5, 31),
                Outline = "大会名:ジュニア選手 権場所:日本テニスコート",
                TournamentEntryReceptionMailSubject = "メール件名",
                TournamentEntryReceptionMailBody    = "メール 本文",
            };

            var mockUseCase = new Mock <ITournamentUseCase>();
            var controller  = new TournamentsController(mockUseCase.Object);

            controller.ModelState.AddModelError("error", "some error");

            // Act
            var result = await controller.Edit(viewModel);

            // Arrange
            var viewResult = Assert.IsType <ViewResult>(result);

            Assert.Null(viewResult.ViewName);
            var model = Assert.IsType <EditViewModel>(viewResult.ViewData.Model);

            Assert.Equal(viewModel.TournamentId, model.TournamentId);
            Assert.Equal(viewModel.TournamentName, model.TournamentName);
            Assert.Equal(viewModel.SelectedTournamentType, model.SelectedTournamentType);
            Assert.Equal(viewModel.SelectedRegistrationYear, model.SelectedRegistrationYear);
            Assert.Equal(viewModel.SelectedTypeOfYear, model.SelectedTypeOfYear);
            Assert.Equal(viewModel.SelectedAggregationMonth, model.SelectedAggregationMonth);
            Assert.Equal(viewModel.SelectedTennisEvents, model.SelectedTennisEvents);
            Assert.Equal(viewModel.HoldingStartDate, model.HoldingStartDate);
            Assert.Equal(viewModel.HoldingEndDate, model.HoldingEndDate);
            Assert.Equal(viewModel.SelectedHoldingDates, model.SelectedHoldingDates);
            Assert.Equal(viewModel.Venue, model.Venue);
            Assert.Equal(viewModel.EntryFee, model.EntryFee);
            Assert.Equal(viewModel.SelectedMethodOfPayments, model.SelectedMethodOfPayments);
            Assert.Equal(viewModel.ApplicationStartDate, model.ApplicationStartDate);
            Assert.Equal(viewModel.ApplicationEndDate, model.ApplicationEndDate);
            Assert.Equal(viewModel.Outline, model.Outline);
            Assert.Equal(viewModel.TournamentEntryReceptionMailSubject, model.TournamentEntryReceptionMailSubject);
            Assert.Equal(viewModel.TournamentEntryReceptionMailBody, model.TournamentEntryReceptionMailBody);
        }
        public async void 大会登録時無効な値の場合再表示()
        {
            // Arrange
            var holdingPeriodStartDate = new DateTime(2020, 5, 1);
            var holdingPeriodEndDate   = new DateTime(2020, 5, 31);
            var viewModel = new RegisterViewModel()
            {
                TournamentName           = "ジュニア選手権",
                SelectedTournamentType   = TournamentType.WithDraw.Name,
                SelectedRegistrationYear = "2020/4/1",
                SelectedTypeOfYear       = TypeOfYear.Odd.Name,
                SelectedAggregationMonth = "2020/6/1",
                SelectedTennisEvents     = new List <string>()
                {
                    "1_1_1", "1_1_2"
                },
                HoldingStartDate     = holdingPeriodStartDate,
                HoldingEndDate       = holdingPeriodEndDate,
                SelectedHoldingDates = new List <string>()
                {
                    "2020/6/12", "2020/6/13"
                },
                Venue    = "日本テニスコート",
                EntryFee = 100,
                SelectedMethodOfPayments = MethodOfPayment.PrePayment.Name,
                ApplicationStartDate     = new DateTime(2020, 5, 1),
                ApplicationEndDate       = new DateTime(2020, 5, 31),
                Outline = "大会名:ジュニア選手 権場所:日本テニスコート",
                TournamentEntryReceptionMailSubject = "メール件名",
                TournamentEntryReceptionMailBody    = "メール本文",
            };

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

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

            controller.ModelState.AddModelError("error", "some error");

            // Act
            var result = await controller.Register(viewModel);

            // Arrange
            var viewResult = Assert.IsType <ViewResult>(result);

            Assert.Null(viewResult.ViewName);
            var model = Assert.IsType <RegisterViewModel>(viewResult.ViewData.Model);

            Assert.Equal(viewModel.TournamentName, model.TournamentName);
            Assert.Equal(viewModel.SelectedTournamentType, model.SelectedTournamentType);
            Assert.Equal(viewModel.SelectedRegistrationYear, model.SelectedRegistrationYear);
            Assert.Equal(viewModel.SelectedTypeOfYear, model.SelectedTypeOfYear);
            Assert.Equal(viewModel.SelectedAggregationMonth, model.SelectedAggregationMonth);
            Assert.Equal(viewModel.SelectedTennisEvents, model.SelectedTennisEvents);
            Assert.Equal(viewModel.HoldingStartDate, model.HoldingStartDate);
            Assert.Equal(viewModel.HoldingEndDate, model.HoldingEndDate);
            Assert.Equal(viewModel.SelectedHoldingDates, model.SelectedHoldingDates);
            Assert.Equal(viewModel.Venue, model.Venue);
            Assert.Equal(viewModel.EntryFee, model.EntryFee);
            Assert.Equal(viewModel.SelectedMethodOfPayments, model.SelectedMethodOfPayments);
            Assert.Equal(viewModel.ApplicationStartDate, model.ApplicationStartDate);
            Assert.Equal(viewModel.ApplicationEndDate, model.ApplicationEndDate);
            Assert.Equal(viewModel.Outline, model.Outline);
            Assert.Equal(viewModel.TournamentEntryReceptionMailSubject, model.TournamentEntryReceptionMailSubject);
            Assert.Equal(viewModel.TournamentEntryReceptionMailBody, model.TournamentEntryReceptionMailBody);
        }
Beispiel #13
0
 public TournamentTests()
 {
     _mockRepo   = new Mock <ITourRepo>();
     _controller = new TournamentsController(_mockRepo.Object);
 }
Beispiel #14
0
 public void SetUp()
 {
     _database        = Substitute.For <IStartippDb>();
     _systemUnderTest = new TournamentsController(_database);
 }