Example #1
0
        public async Task UpdateAsync(ObjectId issueId, ObjectId requirementId, IssueRequirement requirement)
        {
            if (requirementId.Equals(requirement.Id) is false)
            {
                throw new HttpStatusException(400, "Die ID des Pfades passt nicht zu der ID der Ressource.");
            }

            var issue = await _issueRepo.GetAsync(issueId);

            if (issue is null)
            {
                throw new HttpStatusException(400, "Das angefragte Issue Existiert nicht");
            }

            if (string.IsNullOrWhiteSpace(requirement.Requirement))
            {
                throw new HttpStatusException(400, "Bitte geben Sie eine valide Anforderung an");
            }

            var req = issue.IssueDetail.Requirements.First(it => it.Id == requirement.Id);

            await SetRequirementFieldsAsync(issue, req, requirement);

            await _issueRepo.UpdateAsync(issue);
        }
Example #2
0
        public async Task CreateSummary1()
        {
            using var helper = await new SimpleTestHelperBuilderSummaryRights(Role.CustomerRole).Build();

            var issue = helper.Issue;
            IssueRequirement issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen"
            };
            await helper.Helper.IssueRequirementService.CreateAsync(issue.Id, issueRequirement);

            var uri      = $"/api/issues/{issue.Id}/summaries";
            var response = await helper.client.PostAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);

            uri      = $"/api/issues/{issue.Id}/summaries";
            response = await helper.client.GetAsync(uri);

            Assert.IsTrue(response.IsSuccessStatusCode);

            var requirements = await response.Content.Parse <IList <IssueRequirement> >();

            Assert.IsTrue(requirements != null && requirements.Count > 0);

            issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen2"
            };
            uri      = $"/api/issues/{issue.Id}/requirements/";
            response = await helper.client.PostAsync(uri, issueRequirement.ToStringContent());

            Assert.IsFalse(response.IsSuccessStatusCode);
        }
Example #3
0
        public async Task DeclineSummaryFalse2()
        {
            using var helper = await new SimpleTestHelperBuilder().Build();
            await helper.SetState(State.NegotiationState);

            IssueRequirement issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen"
            };
            await helper.Helper.IssueRequirementService.CreateAsync(helper.Issue.Id, issueRequirement);

            var uri      = $"/api/issues/{helper.Issue.Id}/summaries";
            var responce = await helper.client.PostAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(responce.IsSuccessStatusCode);

            uri      = $"/api/issues/{helper.Issue.Id}/summaries?accept=true";
            responce = await helper.client.PutAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(responce.IsSuccessStatusCode);

            var issue = await helper.GetIssueAsync(helper.Issue.Id);

            Assert.IsTrue(issue.IssueDetail.RequirementsAccepted);


            Assert.AreEqual(State.ProcessingState, (await helper.Helper.GetStateById(issue)).Name);

            uri      = $"/api/issues/{issue.Id}/summaries?accept=false";
            responce = await helper.client.PutAsync(uri, 1.0.ToStringContent());

            Assert.IsFalse(responce.IsSuccessStatusCode);
        }
Example #4
0
        public async Task DeleteRequirement()
        {
            using var helper = await new SimpleTestHelperBuilder().Build();
            IssueRequirement issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen"
            };
            var uri      = $"/api/issues/{helper.Issue.Id}/requirements/";
            var response = await helper.client.PostAsync(uri, issueRequirement.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);

            var issue = await helper.GetIssueAsync(helper.Issue.Id);

            var addedRequirement = issue.IssueDetail.Requirements?.FirstOrDefault(x => x.Requirement.Equals("Die Application Testen"));

            uri      = $"/api/issues/{issue.Id}/requirements/{addedRequirement.Id}";
            response = await helper.client.DeleteAsync(uri);

            Assert.IsTrue(response.IsSuccessStatusCode);

            issue = await helper.GetIssueAsync(helper.Issue.Id);

            var exits = issue.IssueDetail.Requirements?.FirstOrDefault(x => x.Requirement.Equals("Die Application Testen")) != null;

            Assert.IsFalse(exits);
        }
Example #5
0
        public async Task CreateSummary2()
        {
            var builder = new SimpleTestHelperBuilderSummaryRights(Role.CustomerRole);

            using var helper = await builder.Build();

            var signIn = await helper.Helper.SignIn(new SignInRequest()
            {
                Username = builder.Costumer.Username,
                Password = helper.Helper.UsedPasswordForTests
            });

            helper.Helper.SetAuth(signIn);

            var issue = helper.Issue;
            IssueRequirement issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen"
            };
            await helper.Helper.IssueRequirementService.CreateAsync(issue.Id, issueRequirement);

            var uri      = $"/api/issues/{issue.Id}/summaries";
            var response = await helper.client.PostAsync(uri, 1.0.ToStringContent());

            Assert.IsFalse(response.IsSuccessStatusCode);
        }
Example #6
0
        public async Task DeclineSummary()
        {
            using var helper = await new SimpleTestHelperBuilder().Build();

            IssueRequirement issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen"
            };
            await helper.Helper.IssueRequirementService.CreateAsync(helper.Issue.Id, issueRequirement);

            var uri      = $"/api/issues/{helper.Issue.Id}/summaries";
            var responce = await helper.client.PostAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(responce.IsSuccessStatusCode);

            uri      = $"/api/issues/{helper.Issue.Id}/summaries?accept=false";
            responce = await helper.client.PutAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(responce.IsSuccessStatusCode);

            var issue = await helper.GetIssueAsync(helper.Issue.Id);

            Assert.IsFalse(issue.IssueDetail.RequirementsAccepted);
            Assert.IsFalse(issue.IssueDetail.RequirementsSummaryCreated);

            issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen2"
            };
            uri      = $"/api/issues/{issue.Id}/requirements/";
            responce = await helper.client.PostAsync(uri, issueRequirement.ToStringContent());

            Assert.IsTrue(responce.IsSuccessStatusCode);
        }
Example #7
0
        public async Task <IssueRequirement> CreateAsync(ObjectId issueId, IssueRequirement requirement)
        {
            var issue = await _issueRepo.GetAsync(issueId);

            await AuthenticateRequirmentAsync(issue, IssueOperationRequirments.CreateRequirements);

            if (issue is null)
            {
                throw new HttpStatusException(400, "Das angefragte Issue Existiert nicht");
            }

            if (issue.IssueDetail.RequirementsSummaryCreated)
            {
                throw new HttpStatusException(400, "Eine Anforderung für dieses Ticket konnte nicht erstellt werden, da schon eine Zusammenfassung erstellt wurde");
            }

            if (string.IsNullOrWhiteSpace(requirement.Requirement))
            {
                throw new HttpStatusException(400, "Bitte geben Sie eine Valide Anforderung an");
            }

            if (issue.IssueDetail.Requirements is null)
            {
                issue.IssueDetail.Requirements = new List <IssueRequirement>();
            }

            requirement.Id = ObjectId.GenerateNewId();
            issue.IssueDetail.Requirements.Add(requirement);
            await _issueRepo.UpdateAsync(issue);

            return(requirement);
        }
Example #8
0
        public async Task DeclineSummary5()
        {
            var builder = new SimpleTestHelperBuilderSummaryRights2();

            using var helper = await builder.Build();

            await helper.SetState(State.NegotiationState);

            var issue = helper.Issue;
            IssueRequirement issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen"
            };
            await helper.Helper.IssueRequirementService.CreateAsync(issue.Id, issueRequirement);

            var uri      = $"/api/issues/{issue.Id}/summaries";
            var response = await helper.client.PostAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);

            var signIn = await helper.Helper.SignIn(new SignInRequest()
            {
                Username = builder.Customer.Username,
                Password = helper.Helper.UsedPasswordForTests
            });

            helper.Helper.SetAuth(signIn);

            uri      = $"/api/issues/{issue.Id}/summaries?accept=false";
            response = await helper.client.PutAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);

            var issueUpdated = await helper.GetIssueAsync(helper.Issue.Id);

            Assert.IsFalse(issueUpdated.IssueDetail.RequirementsAccepted);
            Assert.IsFalse(issueUpdated.IssueDetail.RequirementsSummaryCreated);

            helper.Helper.SetAuth(helper.SignIn);

            issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen2"
            };
            uri      = $"/api/issues/{issue.Id}/requirements/";
            response = await helper.client.PostAsync(uri, issueRequirement.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);
        }
Example #9
0
        public async Task AcceptSummary3()
        {
            var builder = new SimpleTestHelperBuilderSummaryRights(Role.EmployeeRole);

            using var helper = await builder.Build();

            await helper.SetState(State.NegotiationState);

            var issue = helper.Issue;
            IssueRequirement issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen"
            };
            await helper.Helper.IssueRequirementService.CreateAsync(issue.Id, issueRequirement);

            var uri      = $"/api/issues/{issue.Id}/summaries";
            var response = await helper.client.PostAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);

            var signIn = await helper.Helper.SignIn(new SignInRequest()
            {
                Username = builder.Costumer.Username,
                Password = helper.Helper.UsedPasswordForTests
            });

            helper.Helper.SetAuth(signIn);

            uri      = $"/api/issues/{issue.Id}/summaries?accept=true";
            response = await helper.client.PutAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);

            var newIssue = await helper.GetIssueAsync(issue.Id);

            Assert.IsTrue(newIssue.IssueDetail.RequirementsAccepted);

            Assert.AreEqual(State.ProcessingState, (await helper.Helper.GetStateById(newIssue)).Name);

            issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen2"
            };
            uri      = $"/api/issues/{issue.Id}/requirements/";
            response = await helper.client.PostAsync(uri, issueRequirement.ToStringContent());

            Assert.IsFalse(response.IsSuccessStatusCode);
        }
        public async Task SummaryAcceptedConversation()
        {
            using var helper = await new SimpleTestHelperBuilder().Build();
            await helper.SetState(State.NegotiationState);

            var issue = helper.Issue;
            IssueRequirement issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen"
            };
            await helper.Helper.IssueRequirementService.CreateAsync(issue.Id, issueRequirement);

            // Create a summary
            var uri      = $"/api/issues/{issue.Id}/summaries";
            var response = await helper.client.PostAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);

            // Test if the SummaryCreated Conversation Item is there
            var newIssue = await helper.Helper.GetIssueAsync(issue.Id);

            var latestConversationItem = newIssue.ConversationItems.Last();

            Assert.AreEqual(latestConversationItem.CreatorUserId, helper.User.Id);
            Assert.AreEqual(latestConversationItem.Type, IssueConversation.SummaryCreatedType);
            Assert.AreEqual(latestConversationItem.Requirements.Single(), issueRequirement.Requirement);

            // Accept the summary
            uri      = $"/api/issues/{issue.Id}/summaries?accept=true";
            response = await helper.client.PutAsync(uri, null);

            Assert.IsTrue(response.IsSuccessStatusCode);

            // Test if the SummaryDeclined Conversation Item is there
            newIssue = await helper.GetIssueAsync(issue.Id);

            latestConversationItem = newIssue.ConversationItems[newIssue.ConversationItems.Count - 2];
            Assert.IsTrue(latestConversationItem is not null);
            Assert.AreEqual(latestConversationItem.CreatorUserId, helper.User.Id);
            Assert.AreEqual(latestConversationItem.Type, IssueConversation.SummaryAcceptedType);
            Assert.AreEqual(latestConversationItem.Requirements.Single(), issueRequirement.Requirement);

            latestConversationItem = newIssue.ConversationItems[newIssue.ConversationItems.Count - 1];
            Assert.IsTrue(latestConversationItem is not null);
            Assert.AreEqual(latestConversationItem.CreatorUserId, helper.User.Id);
            Assert.AreEqual(latestConversationItem.Type, IssueConversation.StateChangeType);
            Assert.AreEqual(latestConversationItem.Data, $"Status von {State.NegotiationState} zu {State.ProcessingState} geändert.");
        }
Example #11
0
        public async Task DeclineSummaryFalse()
        {
            using var helper = await new SimpleTestHelperBuilder().Build();

            var uri      = $"/api/issues/{helper.Issue.Id}/summaries?accept=false";
            var responce = await helper.client.PutAsync(uri, 1.0.ToStringContent());

            Assert.IsFalse(responce.IsSuccessStatusCode);

            var issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen2"
            };

            uri      = $"/api/issues/{helper.Issue.Id}/requirements/";
            responce = await helper.client.PostAsync(uri, issueRequirement.ToStringContent());

            Assert.IsTrue(responce.IsSuccessStatusCode);
        }
        public async Task DeclineSummaryConversion()
        {
            using var helper = await new SimpleTestHelperBuilder().Build();
            var user  = helper.User;
            var issue = helper.Issue;

            IssueRequirement issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen"
            };

            issueRequirement = await helper.Helper.IssueRequirementService.CreateAsync(issue.Id, issueRequirement);

            // Create a summary
            var uri      = $"/api/issues/{issue.Id}/summaries";
            var response = await helper.client.PostAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);

            // Test if the SummaryCreated Conversation Item is there
            var newIssue = await helper.GetIssueAsync(issue.Id);

            var latestConversationItem = newIssue.ConversationItems.Last();

            Assert.AreEqual(latestConversationItem.CreatorUserId, user.Id);
            Assert.AreEqual(latestConversationItem.Type, IssueConversation.SummaryCreatedType);
            Assert.AreEqual(latestConversationItem.Requirements.Single(), issueRequirement.Requirement);

            // Decline the summary
            uri      = $"/api/issues/{issue.Id}/summaries?accept=false";
            response = await helper.client.PutAsync(uri, null);

            Assert.IsTrue(response.IsSuccessStatusCode);

            // Test if the SummaryDeclined Conversation Item is there
            newIssue = await helper.Helper.GetIssueAsync(issue.Id);

            latestConversationItem = newIssue.ConversationItems.Last();
            Assert.AreEqual(latestConversationItem.CreatorUserId, user.Id);
            Assert.AreEqual(latestConversationItem.Type, IssueConversation.SummaryDeclinedType);
            Assert.AreEqual(latestConversationItem.Requirements.Single(), issueRequirement.Requirement);
        }
Example #13
0
        private async Task SetRequirementFieldsAsync(Issue issue, IssueRequirement dest, IssueRequirement source)
        {
            if (dest.Requirement != source.Requirement)
            {
                if (issue.IssueDetail.RequirementsSummaryCreated)
                {
                    throw new HttpStatusException(400, "Die Anforderung für dieses Ticket konnte nicht aktualisiert werden, da schon eine Zusammenfassung erstellt wurde");
                }
                else
                {
                    await AuthenticateRequirmentAsync(issue, IssueOperationRequirments.EditRequirements);
                }
            }

            if (dest.Achieved != source.Achieved)
            {
                await AuthenticateRequirmentAsync(issue, IssueOperationRequirments.AchieveRequirements, "Du hast nicht die Rechte um ein Requirment als abgeschlossen zu markieren");
            }

            dest.Requirement = source.Requirement;
            dest.Achieved    = source.Achieved;
        }
Example #14
0
        public async Task AcceptSummary2()
        {
            var builder = new SimpleTestHelperBuilderSummaryRights(Role.CustomerRole);

            using var helper = await builder.Build();

            var issue = helper.Issue;
            IssueRequirement issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen"
            };
            await helper.Helper.IssueRequirementService.CreateAsync(issue.Id, issueRequirement);

            var uri      = $"/api/issues/{issue.Id}/summaries";
            var response = await helper.client.PostAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);

            uri      = $"/api/issues/{issue.Id}/summaries?accept=true";
            response = await helper.client.PutAsync(uri, 1.0.ToStringContent());

            Assert.IsFalse(response.IsSuccessStatusCode);
        }
Example #15
0
        public async Task <ActionResult <IList <IssueRequirement> > > Post([FromRoute] ObjectId issueId, [FromBody] IssueRequirement requirement)
        {
            var res = await _issueService.CreateAsync(issueId, requirement);

            return(CreatedAtAction(nameof(Get), new { issueId, id = res.Id }, res));
        }
Example #16
0
        public async Task AcceptChildrenSummary()
        {
            // Ober ticket Erstellen und Zusammenfassung akzeptieren
            using var helper = await new SimpleTestHelperBuilder().Build();
            await helper.SetState(State.NegotiationState);

            var issue = helper.Issue;
            IssueRequirement issueRequirement = new IssueRequirement()
            {
                Requirement = "Die Application Testen"
            };
            await helper.Helper.IssueRequirementService.CreateAsync(issue.Id, issueRequirement);

            var uri      = $"/api/issues/{issue.Id}/summaries";
            var response = await helper.client.PostAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);

            uri      = $"/api/issues/{issue.Id}/summaries?accept=true";
            response = await helper.client.PutAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);

            var newIssue = await helper.GetIssueAsync(issue.Id);

            Assert.IsTrue(newIssue.IssueDetail.RequirementsAccepted);

            Assert.AreEqual(State.ProcessingState, (await helper.Helper.GetStateById(newIssue)).Name);

            //Unterticket erstellen und Zusammenfassung acceptieren
            var child = await helper.CreateIssue().Parse <IssueDTO>();

            await helper.SetIssueChild(child.Id);

            await helper.Helper.SetStateOfIssue(child, State.NegotiationState);

            var res = await helper.Helper.GetChildrenIssues(helper.Issue.Id);

            Assert.AreEqual(HttpStatusCode.OK, res.StatusCode);
            var children = await res.Parse <List <IssueDTO> >();

            Assert.AreEqual(1, children.Count);
            Assert.AreEqual(child.Id, children[0].Id);

            await helper.Helper.IssueRequirementService.CreateAsync(child.Id, issueRequirement);

            uri      = $"/api/issues/{child.Id}/summaries";
            response = await helper.client.PostAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);

            uri      = $"/api/issues/{child.Id}/summaries?accept=true";
            response = await helper.client.PutAsync(uri, 1.0.ToStringContent());

            Assert.IsTrue(response.IsSuccessStatusCode);

            var newChild = await helper.GetIssueAsync(child.Id);

            Assert.IsTrue(newIssue.IssueDetail.RequirementsAccepted);

            Assert.AreEqual(State.ProcessingState, (await helper.Helper.GetStateById(newChild)).Name);
        }
Example #17
0
        public async Task <ActionResult <IList <IssueRequirement> > > Put([FromRoute] ObjectId issueId, [FromRoute] ObjectId id, [FromBody] IssueRequirement requirement)
        {
            await _issueService.UpdateAsync(issueId, id, requirement);

            return(NoContent());
        }