Example #1
0
        private async Task Updated_Bug_Properties_Get_Persisted()
        {
            // GIVEN a 'bug'
            var ticketRef = await CreateSampleBug();

            // WHEN changing the title of the 'bug'
            var dto = new BugAddUpdRequest
            {
                Title    = "Test Bug (Updated)",
                Severity = BugSeverity.Low,
                Priority = BugPriority.P1
            };
            var ticketUpdatedRef = await _commandService.Update(ticketRef.Id !, dto);

            await SaveChanges();

            // THEN
            // The returned ID of the updated ticket hasn't changed
            Assert.True(ticketUpdatedRef.IsSuccess);
            Assert.Equal(ticketRef.Id, ticketUpdatedRef.Value.Id);

            // the new ticket's properties appear in the DB
            var ticket = await _queryService.GetById(ticketRef.Id !);

            Assert.True(ticket.IsSuccess);
            var bug = ticket.Value as BugGetResponse;

            Assert.NotNull(bug);
            Assert.Equal(dto.Title, bug !.Title);
            Assert.Equal(dto.Severity, bug.Severity);
            Assert.Equal(dto.Priority, bug.Priority);
        }
        public async Task <IDomainResult <BacklogItemReference> > Update <T>(string id, T dto) where T : BacklogItemAddUpdRequestBase
        {
            var entity = await DbSession.LoadAsync <BacklogItem>(GetFullId(id));

            if (entity == null)
            {
                return(DomainResult.NotFound <BacklogItemReference>());
            }

            var(_, status) = dto switch
            {
                BugAddUpdRequest bug => await _dtoToEntityConversion.ConvertToEntity(bug, entity as BacklogItemBug),
                UserStoryAddUpdRequest story => await _dtoToEntityConversion.ConvertToEntity(story, entity as BacklogItemUserStory),
                TaskAddUpdRequest task => await _dtoToEntityConversion.ConvertToEntity(task, entity as BacklogItemTask),
                FeatureAddUpdRequest feature => await _dtoToEntityConversion.ConvertToEntity(feature, entity as BacklogItemFeature),
                _ => throw new ArgumentException($"Unsupported type ${typeof(T)}", nameof(dto))
            };
            if (!status.IsSuccess)
            {
                return(status.To <BacklogItemReference>());
            }

            var ticketRef = entity.ToReference().RemoveEntityPrefixFromId();

            await UpdateRelatedItems(dto, ticketRef);

            return(DomainResult.Success(ticketRef));
        }
Example #3
0
        private async Task <BacklogItemReference> CreateBacklogItem()
        {
            var dto = new BugAddUpdRequest {
                Title = "Test_" + GetRandomString()
            };
            var addedRef = await _commandService.Create(dto);

            if (!addedRef.IsSuccess)
            {
                throw new Exception("Failed to create a backlog item");
            }
            await SaveChanges();

            return(addedRef.Value);
        }
Example #4
0
        private async Task <BacklogItemReference> CreateSampleBug()
        {
            var dto = new BugAddUpdRequest
            {
                Title    = "Test Bug",
                Severity = BugSeverity.Critical,
                Priority = BugPriority.P1
            };
            var ticketAddedRef = await _commandService.Create(dto);

            if (!ticketAddedRef.IsSuccess)
            {
                throw new Exception("Failed to create a backlog item");
            }
            await SaveChanges();

            return(ticketAddedRef.Value);
        }
Example #5
0
        private async Task <string> CreateBacklogItem <T>(string customFieldId, T customFieldValue)
        {
            var dto = new BugAddUpdRequest
            {
                Title        = "Test_" + GetRandomString(),
                CustomFields = new Dictionary <string, object?> {
                    { customFieldId, customFieldValue }
                }
            };
            var addedRef = await _commandService.Create(dto);

            if (!addedRef.IsSuccess)
            {
                throw new Exception("Failed to create a backlog item");
            }

            await SaveChanges();

            return(addedRef.Value.Id !);
        }
Example #6
0
        public async Task <IDomainResult <BacklogItemReference> > Create <T>(T dto) where T : BacklogItemAddUpdRequestBase
        {
            BacklogItem?ticket = dto switch
            {
                BugAddUpdRequest bug => await ConvertDtoToEntity <BacklogItemBug, BugAddUpdRequest>(bug),
                UserStoryAddUpdRequest story => await ConvertDtoToEntity <BacklogItemUserStory, UserStoryAddUpdRequest>(story),
                _ => null,
            };

            if (ticket == null)
            {
                return(DomainResult.Failed <BacklogItemReference>("Incorrect Backlog structure"));
            }

            await DbSession.StoreAsync(ticket);

            return(DomainResult.Success(
                       ticket.ToReference().RemoveEntityPrefixFromId()
                       ));
        }
Example #7
0
        private async Task <BacklogItemReference> CreateSampleBug(params string[] customFieldId)
        {
            var dto = new BugAddUpdRequest
            {
                Title               = "Test Bug",
                Severity            = BugSeverity.Critical,
                Priority            = BugPriority.P1,
                ChangedCustomFields = customFieldId.Select(id => new BacklogCustomFieldAction {
                    CustomFieldId = id, ObjValue = "Test", ActionType = ListActionType.Add
                }).ToList()
            };
            var ticketAddedRef = await _commandTicketService.Create(dto);

            if (!ticketAddedRef.IsSuccess)
            {
                throw new Exception("Failed to create a backlog item");
            }
            await SaveChanges();

            return(ticketAddedRef.Value);
        }
        public async Task <IDomainResult <BacklogItemReference> > Create <T>(T dto) where T : BacklogItemAddUpdRequestBase
        {
            var(ticket, status) = dto switch
            {
                BugAddUpdRequest bug => await _dtoToEntityConversion.ConvertToEntity <BacklogItemBug, BugAddUpdRequest>(bug),
                UserStoryAddUpdRequest story => await _dtoToEntityConversion.ConvertToEntity <BacklogItemUserStory, UserStoryAddUpdRequest>(story),
                TaskAddUpdRequest task => await _dtoToEntityConversion.ConvertToEntity <BacklogItemTask, TaskAddUpdRequest>(task),
                FeatureAddUpdRequest feature => await _dtoToEntityConversion.ConvertToEntity <BacklogItemFeature, FeatureAddUpdRequest>(feature),
                _ => throw new ArgumentException($"Unsupported type ${typeof(T)}", nameof(dto))
            };
            if (!status.IsSuccess)
            {
                return(status.To <BacklogItemReference>());
            }

            await DbSession.StoreAsync(ticket);

            var ticketRef = ticket.ToReference().RemoveEntityPrefixFromId();

            await UpdateRelatedItems(dto, ticketRef);

            return(DomainResult.Success(ticketRef));
        }
Example #9
0
        public async Task <IDomainResult <BacklogItemReference> > Update <T>(string id, T dto) where T : BacklogItemAddUpdRequestBase
        {
            var entity = await DbSession.LoadAsync <BacklogItem>(GetFullId(id));

            if (entity == null)
            {
                return(DomainResult.NotFound <BacklogItemReference>());
            }

            entity = dto switch
            {
                BugAddUpdRequest bug => await ConvertDtoToEntity(bug, entity as BacklogItemBug),
                UserStoryAddUpdRequest story => await ConvertDtoToEntity(story, entity as BacklogItemUserStory),
                _ => null
            };
            if (entity == null)
            {
                return(DomainResult.Failed <BacklogItemReference>("Incorrect Backlog structure"));
            }

            return(DomainResult.Success(
                       entity.ToReference().RemoveEntityPrefixFromId()
                       ));
        }
Example #10
0
 public Task <ActionResult <BacklogItemReference> > Update([FromServices] IBacklogItemCommandService service,
                                                           [FromRoute] string id,
                                                           BugAddUpdRequest dto)
 => service.Update(id, dto).ToActionResultOfT();
Example #11
0
 public Task <ActionResult <BacklogItemReference> > Create([FromServices] IBacklogItemCommandService service,
                                                           BugAddUpdRequest dto)
 => service.Create(dto).ToActionResultOfT();