Example #1
0
        public async Task CreateChallengeAsync_ShouldBeOfTypeValidationResultWithErrors()
        {
            // Arrange
            TestMock.ChallengePayoutStrategy.Setup(payout => payout.GetChallengePayout(It.IsAny <ChallengePayoutEntries>(), It.IsAny <EntryFee>())).Verifiable();

            TestMock.ChallengePayoutFactory.Setup(payout => payout.CreateInstance()).Returns(TestMock.ChallengePayoutStrategy.Object).Verifiable();

            var service = new ChallengeService(TestMock.ChallengePayoutFactory.Object, TestMock.ChallengeRepository.Object);

            var bucket = new ChallengePayoutBucket(ChallengePayoutBucketPrize.Consolation, ChallengePayoutBucketSize.Individual);

            var buckets = new ChallengePayoutBuckets(
                new List <ChallengePayoutBucket>
            {
                bucket
            });

            var payoutEntries = new ChallengePayoutEntries(buckets);

            // Act
            var result = await service.CreateChallengeAsync(new ChallengeId(), payoutEntries, new EntryFee(5000, CurrencyType.Token));

            // Assert
            result.Should().BeOfType <DomainValidationResult <IChallenge> >();

            result.Errors.Should().NotBeEmpty();

            TestMock.ChallengePayoutStrategy.Verify(payout => payout.GetChallengePayout(It.IsAny <ChallengePayoutEntries>(), It.IsAny <EntryFee>()), Times.Once);

            TestMock.ChallengePayoutFactory.Verify(payout => payout.CreateInstance(), Times.Once);
        }
        public async Task <ActionResult <Challenge> > CreateChallenge([FromBody] Challenge toCreate)
        {
            try
            {
                toCreate = await _challengeService.CreateChallengeAsync(toCreate);
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }

            return(Ok(toCreate));
        }