예제 #1
0
        public async Task GivenCreateIssueCommand_ReturnNewIssueId()
        {
            // Arrange
            var command1 = new CreateIssueCommand
            {
                Title       = "Harry Potter & the philosopher's stone",
                Prefix      = "ENG",
                Description = "Read the book"
            };
            var command2 = new CreateIssueCommand
            {
                Title       = "A Game of Thrones",
                Prefix      = "ENG",
                Description = "Read the book"
            };

            // Act
            var content1  = Utilities.GetRequestContent(command1);
            var response1 = await _client.PostAsync("api/issue/new", content1);

            var result1 = await response1.Content.ReadAsStringAsync();

            var content2  = Utilities.GetRequestContent(command2);
            var response2 = await _client.PostAsync("api/issue/new", content2);

            var result2 = await response2.Content.ReadAsStringAsync();


            //Assert
            response1.EnsureSuccessStatusCode();
            response2.EnsureSuccessStatusCode();
            Assert.Equal("ENG-3", result1);
            Assert.Equal("ENG-4", result2);
        }
예제 #2
0
        public void ShouldRequireMinimumFields()
        {
            var command = new CreateIssueCommand();

            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <ValidationException>();
        }
예제 #3
0
        public async Task ShouldNotHaveStoryPointAndStepToReproduceTogether()
        {
            var userId = RunAsDefaultUser();

            var projectId = await SendAsync(new CreateProjectCommand
            {
                Key     = "TKWZ",
                Name    = "Test Project",
                OwnerId = userId
            });

            var command = new CreateIssueCommand
            {
                Assignee         = userId,
                Title            = "Tasks",
                Type             = IssueType.Bug,
                ProjectId        = projectId,
                Reporter         = userId,
                StoryPoint       = 5,
                StepsToReplicate = "-StepsToReplicate-"
            };

            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <ValidationException>();
        }
예제 #4
0
        public async Task ShouldCreateIssueSuccessfully()
        {
            var userId = RunAsDefaultUser();

            var projectId = await SendAsync(new CreateProjectCommand
            {
                Key     = "TKWZ",
                Name    = "Test Project",
                OwnerId = userId
            });

            var command = new CreateIssueCommand
            {
                Assignee  = userId,
                Title     = "Tasks",
                Type      = IssueType.Task,
                ProjectId = projectId,
                Reporter  = userId
            };

            var itemId = await SendAsync(command);

            var item = await FindAsync <Issue>(itemId);

            item.Should().NotBeNull();
            item.Title.Should().Be(command.Title);
            item.CreatedBy.Should().Be(userId);
            item.CreatedDate.Should().BeCloseTo(DateTime.Now, 10000);
            item.LastModifiedBy.Should().BeNull();
            item.LastModified.Should().BeNull();
        }
예제 #5
0
        public CreateIssueResponse CreateIssue(CreateIssueCommand createIssue)
        {
            Project project = this._projectRepository.FindByID(createIssue.ProjectID);

            Issue issue = new Issue
            {
                Key         = GenerateIssueKey(project, this._issueRepository),
                AssigneeID  = createIssue.AssigneeID,
                Attachment  = createIssue.Attachment,
                Description = createIssue.Description,
                IssueTypeID = createIssue.IssueTypeID,
                PriorityID  = createIssue.PriorityID,
                ProjectID   = createIssue.ProjectID,
                ReporterID  = createIssue.ReporterID,
                SprintID    = createIssue.SprintID,
                Summary     = createIssue.Summary
            };

            if (this._issueRepository.FindByKey(issue.Key) == null)
            {
                this._issueRepository.Save(issue);
            }

            return(new CreateIssueResponse
            {
                IssueKey = issue.Key,
                ProjectID = project.ID.ToString()
            });
        }
예제 #6
0
        public ActionResult <Issue> Create(CreateIssueCommand createIssueCommand)
        {
            _createIssueCommandValidator.Validate(createIssueCommand);
            var createdIssueId = _createIssueOperationService.Create(createIssueCommand);

            return(Get(createdIssueId));
        }
예제 #7
0
        public void ShouldBeTrue_WhenSummaryIsNotEmpty()
        {
            var command = new CreateIssueCommand("summary", 21);

            var validator = new CreateIssueCommandValidator();
            var result    = validator.Validate(command);

            result.IsValid.ShouldBe(true);
        }
예제 #8
0
        public void ShouldBeFalse_WheIssueTypeIsEmpty()
        {
            var command = new CreateIssueCommand("summary", 0);

            var validator = new CreateIssueCommandValidator();
            var result    = validator.Validate(command);

            result.IsValid.ShouldBe(false);
        }
예제 #9
0
 private void GivenACommand()
 {
     _command = new CreateIssueCommand
     {
         Title        = Guid.NewGuid().ToString(),
         Description  = Guid.NewGuid().ToString(),
         MediaType    = PlexMediaTypes.Movie,
         TheMovieDbId = new Random().Next(1, int.MaxValue)
     };
 }
예제 #10
0
        public long Create(CreateIssueCommand command)
        {
            using (var scope = new TransactionScope())
            {
                var createdOn = DateTime.Now;

                var createdIssueId = _repository.Create(new Issue(command.Title, command.Notes, createdOn, modifiedOn: createdOn));

                scope.Complete();

                return(createdIssueId);
            }
        }
예제 #11
0
        public async Task <IActionResult> Create([FromBody] CreateIssueCommand command)
        {
            try
            {
                var output = await Mediator.Send(command);

                return(Ok(output));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
예제 #12
0
        public async Task <IActionResult> CreateIssue([FromBody] CreateIssueCommand createIssueCommand)
        {
            await _mediator.Publish(
                new CreateIssueCommand
            {
                ProjectId   = createIssueCommand.ProjectId,
                Description = createIssueCommand.Description,
                Title       = createIssueCommand.Title,
                Type        = createIssueCommand.Type,
                Status      = createIssueCommand.Status,
            });

            return(Ok());
        }
        public void Handle_NotFoundCategory_ShouldThrowArgException()
        {
            // Arrange
            var handler = new CreateIssueCommandHandler(GetCategoryRepository().Object, GetMapper());

            var request = new CreateIssueCommand
            {
                CategoryId = 2,
                IssueName  = "Clean up room"
            };

            // Act
            var del = new AsyncTestDelegate(() => handler.Handle(request, CancellationToken.None));

            // Assert
            Assert.ThrowsAsync <System.ArgumentException>(del);
        }
예제 #14
0
        public async Task ShouldAddProjectIssue()
        {
            var participantUserId = await RunAsUserAsync("participant@local", "Testing1234!", new string[] { });

            var participant = new Participant(participantUserId, "participant firstName", "participant lastName");

            var ownerUserId = await RunAsUserAsync("owner@local", "Testing1234!", new string[] { });

            var owner = new Participant(ownerUserId, "owner firstName", "owner lastName");
            //await AddAsync(participant);
            var entity = new Project(owner, "Project Name", "Key");

            entity.AddParticipant(participant);

            await AddAsync(entity);


            var command = new CreateIssueCommand
            {
                ProjectId   = entity.Id,
                IssueType   = IssueType.Task,
                Description = "Description",
                Title       = "Title",
                Status      = IssueStatus.Todo,
                AssigneeId  = participant.Id
            };

            var id = await SendAsync(command);

            using var scope = _scopeFactory.CreateScope();
            var context = scope.ServiceProvider.GetService <ApplicationDbContext>();
            var project = await context.Projects
                          .Include(x => x.Participants)
                          .Include(x => x.Issues)
                          .SingleOrDefaultAsync(x => x.Id == entity.Id);

            project.Should().NotBeNull();
            project.Participants.Last().Id.Should().Be(participant.Id);
            project.Issues.First().Description.Should().Be(command.Description);
            project.Issues.First().Title.Should().Be(command.Title);
            project.Issues.First().Type.Should().Be(command.IssueType);
            project.Issues.First().Status.Should().Be(command.Status);
            project.CreatedBy.Should().Be(ownerUserId);
            project.Created.Should().BeCloseTo(DateTime.Now, 20000);
        }
예제 #15
0
        public CreateIssueCommandTests()
        {
            _currentUserId = "1a";
            var currentUserService = new Mock <ICurrentUserService>();

            currentUserService.Setup(x => x.GetUserId()).Returns(_currentUserId);

            var context = ContextFactory.CreateInMemoryContext(currentUserService.Object);

            _issueTypeRepository  = new IssueTypeRepository(context);
            _issueRepository      = new IssueRepository(context);
            _issueStateRepository = new IssueStateRepository(context);
            SeedDataTest();


            _handler = new CreateIssueCommandHandler(currentUserService.Object, _issueRepository, _issueStateRepository);
            _request = new CreateIssueCommand("Summary 1", _issueType.Id);
        }
예제 #16
0
        public async void Initialize()
        {
            Project = navigationService.GetNavigationParameter() as Project;
            if (Project == null)
            {
                dialogService.ShowDialog(AppResources.CreateIssueNullProjectMessage, AppResources.Error);
                return;
            }

            CreateIssueCommand.RaiseCanExecuteChanged();

            IssueTypes = await jiraService.GetIssueTypesOfProject(Project.Key);

            PriorityList = await jiraService.GetPriorities();

            LoadingText = AppResources.LoadingMessage;
            MessengerInstance.Send(false, "TaskBarVisibility");
        }
        public async Task Handle_NewIssue_ShouldSaveNewIssue()
        {
            // Arrange
            var categoryRepositoryMock = GetCategoryRepository();

            var handler = new CreateIssueCommandHandler(categoryRepositoryMock.Object, GetMapper());

            var request = new CreateIssueCommand
            {
                CategoryId = 1,
                IssueName  = "Clean out room"
            };

            // Act
            await handler.Handle(request, CancellationToken.None);

            // Assert
            categoryRepositoryMock.Verify(x => x.SaveCategory(It.IsAny <Category>()), Times.Once);
        }
예제 #18
0
    public void GivenCommandWithData_WhenCommandIsSendToApplicationService_ThenWriteModelIsChanged()
    {
        var serviceLocator = new ServiceLocator();

        var writeModel     = new AppWriteModel();
        var commandHandler = new CreateIssueCommandHandler(writeModel);

        serviceLocator.RegisterCommandHandler <CreateIssueCommand, CreateIssueCommandHandler>(commandHandler);

        var applicationService = new IssueApplicationService(new CommandBus(serviceLocator.GetMediator()));

        //Given
        var createdIssueName = "cleaning";

        var command = new CreateIssueCommand(createdIssueName);

        //When
        applicationService.CreateIssue(command);

        //Then
        writeModel.Issues.Should().Have.Count.EqualTo(1);
        writeModel.Issues.Should().Have.SameValuesAs(createdIssueName);
    }
예제 #19
0
 public Task CreateIssue(CreateIssueCommand command)
 {
     return(commandBus.Send(command));
 }
예제 #20
0
 // POST api/<controller>
 public void Post(CreateIssueCommand command)
 {
     _createIssueCommandHandler.Handle(command);
 }
예제 #21
0
 public async Task <ActionResult <int> > Create(CreateIssueCommand command)
 {
     return(await Mediator.Send(command));
 }
예제 #22
0
        public ActionResult CreateIssue(CreateIssueCommand command)
        {
            var response = this._issueService.CreateIssue(command);

            return(Json(response));
        }
예제 #23
0
        public async Task <ActionResult <int> > Create(CreateIssueRequest request, CancellationToken cancellationToken)
        {
            var command = new CreateIssueCommand(request.Summary, request.IssueTypeId);

            return(await _mediator.Send(command, cancellationToken));
        }
예제 #24
0
        public async Task <IActionResult> New(CreateIssueCommand command)
        {
            var result = await Mediator.Send(command);

            return(Ok(result));
        }
예제 #25
0
        public async Task <ActionResult> CreateIssue([FromBody] CreateIssueCommand command)
        {
            var result = await _mediator.Send(command);

            return(result.ToOkIfValidResult());
        }
예제 #26
0
 public async Task <ActionResult <string> > AddAsync([FromBody] CreateIssueCommand request)
 {
     return(await this.Mediator.Send(request));
 }
예제 #27
0
 public async Task <CreateIssueCommandResult> Create(CreateIssueCommand command)
 {
     return(await commandDispatcher.Dispatch <CreateIssueCommand, CreateIssueCommandResult>(command));
 }