Ejemplo n.º 1
0
        public async Task PostShouldCreateChallenge()
        {
            //Arrange
            var challenge            = Fakers.Challenge.Generate();
            var challengesRepository = A.Fake <IChallengesRepository>();

            A.CallTo(() => challengesRepository.CreateChallengeAsync(A <Challenge> .Ignored)).Returns(Task.FromResult(challenge));
            A.CallTo(() => challengesRepository.FindChallengeAsync(challenge.Id)).Returns(Task.FromResult(challenge));
            using var factory = new JeevesWebApplicationFactory(services => services.SwapSingleton(provider => challengesRepository));
            using var client  = factory.CreateClient();
            var createChallengeRequest = new CreateChallenge()
            {
                Name = challenge.Name
            };

            //Act
            using var response = await client.PostAsync("/api/v1/challenges/", JsonSerializer.Serialize(createChallengeRequest));

            //Assert
            response.StatusCode.Should().Be(HttpStatusCode.Created);
            using var getResponse = await client.GetSuccessAsync($"/api/v1/challenges/{challenge.Id}");

            var actualChallenge = JsonSerializer.Deserialize <JeevesChallenge>(await getResponse.Content.ReadAsStringAsync());

            actualChallenge.Should().BeEquivalentTo(challenge);
        }
Ejemplo n.º 2
0
        protected override void OnHandleIntent(Intent intent)
        {
            var bundle = intent.GetBundleExtra(nameof(CreateChallenge));
            var cmd    = new CreateChallenge(
                Guid.NewGuid(),
                bundle.GetInt(nameof(CreateChallenge.Repetitions)),
                bundle.GetString(nameof(CreateChallenge.Description)));
            var task = challengeService.ExecuteCommand(cmd);

            task.ContinueWith(_ => BroadcastSuccess());
            task.ContinueWith(_ => BroadcastFailure(), TaskContinuationOptions.OnlyOnFaulted);
        }
Ejemplo n.º 3
0
        public async Task PostShouldReturnCreatedStatusCode()
        {
            //Arrange
            var challenge            = Fakers.Challenge.Generate();
            var challengesRepository = A.Fake <IChallengesRepository>();

            A.CallTo(() => challengesRepository.CreateChallengeAsync(A <Challenge> .Ignored)).Returns(Task.FromResult(challenge));
            using var factory = new JeevesWebApplicationFactory(services => services.SwapSingleton(provider => challengesRepository));
            using var client  = factory.CreateClient();
            var createChallengeRequest = new CreateChallenge()
            {
                Name = challenge.Name
            };

            //Act
            using var response = await client.PostAsync("/api/v1/challenges/", JsonSerializer.Serialize(createChallengeRequest));

            //Assert
            response.StatusCode.Should().Be(HttpStatusCode.Created);
            response.Headers.Location.PathAndQuery.Should().Be($"/api/v1/challenges/{challenge.Id}");
        }
Ejemplo n.º 4
0
        async Task When(CreateChallenge cmd)
        {
            var challengeId = new ChallengeId(cmd.Id);

            await Update(challengeId, c => c.Create(challengeId, cmd.Repetitions, cmd.Description));
        }