public void ReturnsCustomFieldsAdded() { var jira = TestableJira.Create(); var remoteIssue = new RemoteIssue() { key = "TST-1", project = "TST", type = "1" }; var remoteField = new RemoteField() { id = "CustomField1", name = "My Custom Field" }; jira.SoapService.Setup(s => s.GetIssuesFromJqlSearch(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>())).Returns(new RemoteIssue[1] { remoteIssue }); jira.SoapService.Setup(s => s.GetFieldsForEdit(It.IsAny <string>(), It.IsAny <string>())).Returns(new RemoteField[1] { remoteField }); var issue = jira.CreateIssue("TST"); issue["My Custom Field"] = "test value"; var result = GetUpdatedFieldsForIssue(issue); Assert.Equal(1, result.Length); Assert.Equal("CustomField1", result.First().id); }
public void IfIssueIsCreated_ShouldLoadAttachments() { //arrange var jira = TestableJira.Create("token"); jira.SoapService.Setup(j => j.GetAttachmentsFromIssue("token", "key")) .Returns(new RemoteAttachment[1] { new RemoteAttachment() { filename = "attach.txt" } }); var issue = (new RemoteIssue() { key = "key" }).ToLocal(jira); //act var attachments = issue.GetAttachments(); //assert Assert.Equal(1, attachments.Count); Assert.Equal("attach.txt", attachments[0].FileName); }
public void WillThrowErrorIfCustomFieldNotFoundInContextSpecified() { // Arrange var jira = TestableJira.Create(); jira.SoapService.Setup(c => c.GetFieldsForEdit(It.IsAny <string>(), "issueKey")).Returns(new RemoteField[] { new RemoteField() { id = "editField1", name = "EditCustomField" } }); jira.SoapService.Setup(c => c.GetFieldsForAction(It.IsAny <string>(), "issueKey", "action1")).Returns(new RemoteField[] { new RemoteField() { id = "actionField1", name = "ActionCustomField" } }); var issue = new RemoteIssue() { project = "projectKey", key = "issueKey", customFieldValues = null, }.ToLocal(jira); // Act / Assert var fields = issue.CustomFields; Assert.Throws <InvalidOperationException>(() => fields.ForAction("action1")["EditCustomField"].Values[0]); Assert.Throws <InvalidOperationException>(() => fields.ForEdit()["ActionCustomField"].Values[0]); }
public void Name_ShouldRetriveValueFromRemote() { //arrange var jira = TestableJira.Create(); var customField = new CustomField(new RemoteField() { id = "123", name = "CustomField" }); jira.IssueFieldService.Setup(c => c.GetCustomFieldsAsync(CancellationToken.None)) .Returns(Task.FromResult(Enumerable.Repeat <CustomField>(customField, 1))); var issue = new RemoteIssue() { project = "projectKey", key = "issueKey", customFieldValues = new RemoteCustomFieldValue[] { new RemoteCustomFieldValue() { customfieldId = "123", values = new string[] { "abc" } } } }.ToLocal(jira); //assert Assert.Equal("CustomField", issue.CustomFields[0].Name); }
public void CanSwitchContextToSetDifferentTypeOfCustomFields() { // Arrange var jira = TestableJira.Create(); jira.SoapService.Setup(c => c.GetFieldsForEdit(It.IsAny <string>(), "issueKey")).Returns(new RemoteField[] { new RemoteField() { id = "editField1", name = "EditCustomField" } }); jira.SoapService.Setup(c => c.GetFieldsForAction(It.IsAny <string>(), "issueKey", "action1")).Returns(new RemoteField[] { new RemoteField() { id = "actionField1", name = "ActionCustomField" } }); var issue = new RemoteIssue() { project = "projectKey", key = "issueKey", customFieldValues = null, }.ToLocal(jira); // Act issue.CustomFields .ForAction("action1").Add("ActionCustomField", "actionFieldValue") .ForEdit().Add("EditCustomField", "editFieldValue"); // Assert Assert.Equal(2, issue.CustomFields.Count); }
public async Task IfIssueTypeWithNameNotChanged_ReturnsNoFieldsChanged() { var jira = TestableJira.Create(); var issueType = new IssueType(new RemoteIssueType() { id = "5", name = "Task" }); jira.IssueTypeService.Setup(s => s.GetIssueTypesAsync(CancellationToken.None)) .Returns(Task.FromResult(Enumerable.Repeat(issueType, 1))); var remoteIssue = new RemoteIssue() { type = new RemoteIssueType() { id = "5" }, }; var issue = remoteIssue.ToLocal(jira); issue.Type = "Task"; var fields = await GetUpdatedFieldsForIssueAsync(issue); Assert.Empty(fields); }
public void CallsProgressWorkflowAction() { var jira = TestableJira.Create(); var issue = (new RemoteIssue() { key = "key" }).ToLocal(jira); jira.SoapService.Setup(s => s.GetAvailableActions(It.IsAny <string>(), "key")) .Returns(new RemoteNamedObject[1] { new RemoteNamedObject() { id = "123", name = "action" } }); jira.SoapService.Setup(s => s.ProgressWorkflowAction(It.IsAny <string>(), It.IsAny <RemoteIssue>(), "123", It.IsAny <RemoteFieldValue[]>())) .Returns(new RemoteIssue() { status = "456" }); issue.WorkflowTransition("action"); Assert.Equal("456", issue.Status.Id); }
public void WillReturnSubTaskFromRemote() { // Arrange var jira = TestableJira.Create(); jira.SoapService.Setup(j => j.GetIssuesFromJqlSearch(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>())) .Returns(new RemoteIssue[] { new RemoteIssue() { id = "123", key = "mykey", type = "2", project = "myproject" } }); jira.SoapService.Setup(s => s.GetSubTaskIssueTypes(It.IsAny <string>())) .Returns(new RemoteIssueType[] { new RemoteIssueType() { id = "2", name = "SubTask", subTask = true } }); // Act var issue = jira.GetIssuesFromJql("JQL").First(); // Assert Assert.True(issue.Type.IsSubTask); }
public void IndexByName_ShouldThrowIfUnableToFindRemoteValue() { var jira = TestableJira.Create(); jira.SoapService .Setup(c => c.GetIssuesFromJqlSearch(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>())) .Returns(new RemoteIssue[] { new RemoteIssue() { key = "123" } }); var issue = new RemoteIssue() { project = "bar", key = "foo", customFieldValues = new RemoteCustomFieldValue[] { new RemoteCustomFieldValue() { customfieldId = "123", values = new string[] { "abc" } } } }.ToLocal(jira); Assert.Throws(typeof(InvalidOperationException), () => issue["CustomField"]); }
public void IfIssueIsCreated_ShouldLoadAttachments() { //arrange var jira = TestableJira.Create(); var webClient = new Mock <IWebClient>(); var remoteAttachment = new RemoteAttachment() { filename = "attach.txt" }; jira.IssueService.Setup(j => j.GetAttachmentsAsync("issueKey", It.IsAny <CancellationToken>())) .Returns(Task.FromResult(Enumerable.Repeat <Attachment>(new Attachment(jira, webClient.Object, remoteAttachment), 1))); var issue = (new RemoteIssue() { key = "issueKey" }).ToLocal(jira); //act var attachments = issue.GetAttachmentsAsync().Result; //assert Assert.Single(attachments); Assert.Equal("attach.txt", attachments.First().FileName); }
public void IfNewRemainingEstimate_ShouldAddWorkLog() { var jira = TestableJira.Create(); var remoteWorkLog = new RemoteWorklog() { id = "12345" }; jira.SoapService.Setup(s => s.AddWorklogWithNewRemainingEstimate( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <RemoteWorklog>(), It.IsAny <string>())).Returns(remoteWorkLog); var issue = (new RemoteIssue() { key = "key" }).ToLocal(jira); //act var result = issue.AddWorklog("1d", WorklogStrategy.NewRemainingEstimate, "5d"); //assert Assert.Equal("12345", result.Id); jira.SoapService.Verify(j => j.AddWorklogWithNewRemainingEstimate( "token", "key", It.Is <RemoteWorklog>(l => l.timeSpent == "1d"), "5d")); }
public void Name_ShouldRetriveValueFromRemote() { //arrange var jira = TestableJira.Create(); jira.SoapService.Setup(c => c.GetFieldsForEdit(It.IsAny <string>(), "issueKey")).Returns(new RemoteField[] { new RemoteField() { id = "123", name = "CustomField" } }); var issue = new RemoteIssue() { project = "projectKey", key = "issueKey", customFieldValues = new RemoteCustomFieldValue[] { new RemoteCustomFieldValue() { customfieldId = "123", values = new string[] { "abc" } } } }.ToLocal(jira); //assert Assert.Equal("CustomField", issue.CustomFields[0].Name); }
public async Task ReturnsCustomFieldsAdded() { var jira = TestableJira.Create(); var customField = new CustomField(new RemoteField() { id = "CustomField1", name = "My Custom Field" }); var remoteIssue = new RemoteIssue() { key = "TST-1", project = "TST", type = new RemoteIssueType() { id = "1" } }; jira.IssueService.SetupIssues(jira, remoteIssue); jira.IssueFieldService.Setup(c => c.GetCustomFieldsAsync(CancellationToken.None)) .Returns(Task.FromResult(Enumerable.Repeat <CustomField>(customField, 1))); var issue = jira.CreateIssue("TST"); issue["My Custom Field"] = "test value"; var result = await GetUpdatedFieldsForIssueAsync(issue); Assert.Single(result); Assert.Equal("CustomField1", result.First().id); }
public void WillThrowExceptionIfIssueHasNotBeenInitializedWithAKey() { // Arrange var jira = TestableJira.Create(); var issue = jira.CreateIssue("TST"); // Act, Assert Assert.Throws <InvalidOperationException>(() => jira.DeleteIssue(issue)); }
public void IfTransitionNotFound_ShouldThrowAnException() { var jira = TestableJira.Create(); var issue = (new RemoteIssue() { key = "key" }).ToLocal(jira); Assert.Throws <AggregateException>(() => issue.WorkflowTransitionAsync("foo").Wait()); }
public void Count() { var jira = TestableJira.Create(); var provider = new JiraQueryProvider(jira.Translator.Object, jira.IssueService.Object); var queryable = new JiraQueryable <Issue>(provider); jira.SetupIssues(new RemoteIssue()); Assert.Equal(1, queryable.Count()); }
public void IfTransitionNotFound_ShouldThrowAnException() { var jira = TestableJira.Create(); var issue = (new RemoteIssue() { key = "key" }).ToLocal(jira); Assert.Throws(typeof(InvalidOperationException), () => issue.WorkflowTransition("foo")); }
public void RetrievesTokenIfEmpty() { var jira = TestableJira.Create(); jira.SoapService.Setup(s => s.Login(It.IsAny <string>(), It.IsAny <string>())).Returns("token"); string innerToken = ""; jira.WithToken(t => innerToken = t); Assert.Equal("token", innerToken); }
public void DoesNotRetrieveToken() { var jira = TestableJira.CreateAnonymous(); jira.SoapService.Setup(s => s.Login(It.IsAny <string>(), It.IsAny <string>())).Throws(new Exception("Unexpected call to login")); string innerToken = null; jira.WithToken(t => innerToken = t); Assert.Null(innerToken); }
public async Task IfDateTimeUnChangd_ShouldNotIncludeItInFieldsThatChanged() { var remoteIssue = new RemoteIssue() { duedate = new DateTime(2011, 1, 1) }; var issue = remoteIssue.ToLocal(TestableJira.Create()); Assert.Empty(await GetUpdatedFieldsForIssueAsync(issue)); }
public void IfCredentialsMissingUserName_ShouldThrownException() { // Arrange var jira = TestableJira.Create("token", new JiraCredentials(null)); var issue = (new RemoteIssue() { key = "key" }).ToLocal(jira); // Act Assert.Throws <InvalidOperationException>(() => issue.AddComment("the comment")); }
public void ReusesTokenIfNotEmpty() { var jira = TestableJira.Create(); jira.SoapService.Setup(s => s.Login(It.IsAny <string>(), It.IsAny <string>())).ReturnsInOrder("token", new Exception("Unexpected call to login")); string innerToken = ""; jira.WithToken(t => innerToken = t); jira.WithToken(t => innerToken = t); Assert.Equal("token", innerToken); }
public async Task IfComparable_ReturnsFieldsThatChanged() { var jira = TestableJira.Create(); var issue = jira.CreateIssue("TST"); issue.Priority = "5"; jira.IssuePriorityService.Setup(s => s.GetPrioritiesAsync(CancellationToken.None)) .Returns(Task.FromResult(Enumerable.Repeat(new IssuePriority("5"), 1))); Assert.Single(await GetUpdatedFieldsForIssueAsync(issue)); }
public void IfFieldsSet_ShouldPopulateFields() { var jira = TestableJira.Create(); var issue = jira.CreateIssue("ProjectKey"); var version = new RemoteVersion() { id = "1" }.ToLocal(issue.Jira); var component = new RemoteComponent() { id = "1" }.ToLocal(); jira.IssueTypeService.Setup(s => s.GetIssueTypesAsync(CancellationToken.None)) .Returns(Task.FromResult(Enumerable.Repeat(new IssueType("4", "issuetype"), 1))); jira.IssuePriorityService.Setup(s => s.GetPrioritiesAsync(CancellationToken.None)) .Returns(Task.FromResult(Enumerable.Repeat(new IssuePriority("1", "priority"), 1))); issue.AffectsVersions.Add(version); issue.Assignee = "assignee"; issue.Components.Add(component); // issue.CustomFields <-- requires extra setup, test below issue.Description = "description"; issue.DueDate = new DateTime(2011, 1, 1); issue.Environment = "environment"; issue.FixVersions.Add(version); // issue.Key <-- should be non-settable issue.Priority = "1"; // issue.Project <-- should be non-settable issue.Reporter = "reporter"; issue.Summary = "summary"; issue.Type = "4"; var remoteIssue = issue.ToRemote(); Assert.Single(remoteIssue.affectsVersions); Assert.Equal("assignee", remoteIssue.assignee); Assert.Single(remoteIssue.components); Assert.Null(remoteIssue.created); Assert.Equal("description", remoteIssue.description); Assert.Equal(new DateTime(2011, 1, 1), remoteIssue.duedate); Assert.Equal("environment", remoteIssue.environment); Assert.Null(remoteIssue.key); Assert.Equal("1", remoteIssue.priority.id); Assert.Equal("ProjectKey", remoteIssue.project); Assert.Equal("reporter", remoteIssue.reporter); Assert.Null(remoteIssue.resolution); Assert.Null(remoteIssue.status); Assert.Equal("summary", remoteIssue.summary); Assert.Equal("4", remoteIssue.type.id); Assert.Null(remoteIssue.updated); }
public void First() { var jira = TestableJira.Create(); var provider = new JiraQueryProvider(jira.Translator.Object, jira.IssueService.Object); var queryable = new JiraQueryable <Issue>(provider); jira.SetupIssues(new RemoteIssue() { summary = "foo" }, new RemoteIssue()); Assert.Equal("foo", queryable.First().Summary); }
public async Task IfStringEqual_ReturnNoFieldsThatChanged() { var remoteIssue = new RemoteIssue() { summary = "Summary" }; var issue = remoteIssue.ToLocal(TestableJira.Create()); issue.Summary = "Summary"; Assert.Empty(await GetUpdatedFieldsForIssueAsync(issue)); }
public void RetrievesFilterIdFromServer() { var jira = TestableJira.Create(); jira.SoapService.Setup(s => s.GetFavouriteFilters(It.IsAny <string>())) .Returns(new RemoteFilter[1] { new RemoteFilter() { name = "thefilter", id = "123" } }); jira.GetIssuesFromFilter("thefilter", 100, 200); jira.SoapService.Verify(s => s.GetIssuesFromFilterWithLimit(It.IsAny <string>(), "123", 100, 200)); }
public void WillDeleteIssueFromServer() { // Arrange var jira = TestableJira.Create(); var issue = (new RemoteIssue() { key = "TST-1" }).ToLocal(jira); // Act jira.DeleteIssue(issue); // Assert jira.SoapService.Verify(service => service.DeleteIssue(It.IsAny <string>(), "TST-1")); }
public void UsesDefaultsIfNoneProvided() { var jira = TestableJira.Create(); jira.SoapService.Setup(s => s.GetFavouriteFilters(It.IsAny <string>())) .Returns(new RemoteFilter[1] { new RemoteFilter() { name = "thefilter", id = "123" } }); jira.GetIssuesFromFilter("thefilter"); jira.SoapService.Verify(s => s.GetIssuesFromFilterWithLimit(It.IsAny <string>(), "123", 0, 20)); }
public async Task IfIssueTypeWithId_ReturnField() { var jira = TestableJira.Create(); var issue = jira.CreateIssue("TST"); issue.Priority = "5"; jira.IssuePriorityService.Setup(s => s.GetPrioritiesAsync(CancellationToken.None)) .Returns(Task.FromResult(Enumerable.Repeat(new IssuePriority("5"), 1))); var result = await GetUpdatedFieldsForIssueAsync(issue); Assert.Single(result); Assert.Equal("5", result[0].values[0]); }