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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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."); }
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); }
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; }
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); }
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)); }
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); }
public async Task <ActionResult <IList <IssueRequirement> > > Put([FromRoute] ObjectId issueId, [FromRoute] ObjectId id, [FromBody] IssueRequirement requirement) { await _issueService.UpdateAsync(issueId, id, requirement); return(NoContent()); }