コード例 #1
0
        public async Task <IActionResult> Post([FromBody] ProjectDefinition projectDefinition)
        {
            var project = new Project
            {
                Id    = Guid.NewGuid(),
                Name  = projectDefinition.Name,
                Users = await ResolveUsersAsync(projectDefinition).ConfigureAwait(false),
                Tags  = projectDefinition.Tags
            };

            var command = new ProjectCreateCommand(CurrentUser, project);

            var commandResult = await orchestrator
                                .InvokeAsync <Project>(command)
                                .ConfigureAwait(false);

            if (commandResult.Links.TryGetValue("status", out var statusUrl))
            {
                return(new AcceptedResult(statusUrl, commandResult));
            }
            else
            {
                return(new OkObjectResult(commandResult));
            }
        }
コード例 #2
0
        public void ProjectCreateCommandHandler_Handle()
        {
            var user = FakeObjects.TestUserWithId();
            var team = FakeObjects.TestTeamWithId();

            Project newValue = null;

            var command = new ProjectCreateCommand()
            {
                UserId      = user.Id,
                Description = FakeValues.Description,
                Name        = FakeValues.Name,
                TeamId      = team.Id
            };

            using (var session = _store.OpenSession())
            {
                session.Store(user);
                session.Store(team);
                session.SaveChanges();

                var commandHandler = new ProjectCreateCommandHandler(session);
                commandHandler.Handle(command);

                session.SaveChanges();

                newValue = session.Query <Project>().FirstOrDefault();
            }

            Assert.IsNotNull(newValue);
            Assert.AreEqual(command.Name, newValue.Name);
            Assert.AreEqual(command.Description, newValue.Description);
            //Assert.AreEqual(team.DenormalisedNamedDomainModelReference<Team>(), newValue.Team);
        }
コード例 #3
0
    public async Task ValidateAsync_Error()
    {
        var command = new ProjectCreateCommand(null, new Project());

        var result = await command.ValidateAsync(validatorProvider).ConfigureAwait(false);

        Assert.False(result.IsValid);
    }
コード例 #4
0
    public void Validate_Error()
    {
        var command = new ProjectCreateCommand(null, new Project());

        var result = command.Validate(validatorProvider);

        Assert.False(result.IsValid);
    }
コード例 #5
0
    public async Task ValidateAsync_Success()
    {
        var command = new ProjectCreateCommand(new User(), new Project());

        var result = await command.ValidateAsync(validatorProvider).ConfigureAwait(false);

        Assert.True(result.IsValid);
    }
コード例 #6
0
    public void Validate_Success()
    {
        var command = new ProjectCreateCommand(new User(), new Project());

        var result = command.Validate(validatorProvider);

        Assert.True(result.IsValid);
    }
コード例 #7
0
 public Project(ProjectCreateCommand command)
 {
     this.Apply <ProjectCreateEvent>(command, e =>
     {
         e.Id         = Utils.GenerateId();
         e.CreateTime = DateTime.UtcNow;
     });
 }
コード例 #8
0
        public async Task <Project> Add(string solutionId = "00000000000000000000")
        {
            var command = new ProjectCreateCommand
            {
                Name       = this.GetRandom(),
                SolutionId = solutionId
            };
            var message = new HttpRequestMessage(HttpMethod.Post, API);

            message.AddJsonContent(command);
            var responseMessage = await this.HttpClient.SendAsync(message);

            var id = await responseMessage.AsResult <string>();

            var project = await this.Get(id);

            Assert.Equal(command.Name, project.Name);
            Assert.Equal(command.Version, project.Version);
            return(project);
        }
コード例 #9
0
 public async Task <object> Add(ProjectCreateCommand command)
 {
     return(await this._mediator.Send <string>(command));
 }
コード例 #10
0
        public async Task <string> Handle(ProjectCreateCommand command)
        {
            var project = await this.Add(new Project(command));

            return(project.Id);
        }