Ejemplo n.º 1
0
            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);
            }
Ejemplo n.º 2
0
            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]);
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 6
0
            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);
            }
Ejemplo n.º 7
0
            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);
            }
Ejemplo n.º 8
0
            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"]);
        }
Ejemplo n.º 10
0
            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);
            }
Ejemplo n.º 11
0
            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"));
            }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
            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);
            }
Ejemplo n.º 14
0
            public void WillThrowExceptionIfIssueHasNotBeenInitializedWithAKey()
            {
                // Arrange
                var jira  = TestableJira.Create();
                var issue = jira.CreateIssue("TST");

                // Act, Assert
                Assert.Throws <InvalidOperationException>(() => jira.DeleteIssue(issue));
            }
Ejemplo n.º 15
0
            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());
        }
Ejemplo n.º 17
0
            public void IfTransitionNotFound_ShouldThrowAnException()
            {
                var jira  = TestableJira.Create();
                var issue = (new RemoteIssue()
                {
                    key = "key"
                }).ToLocal(jira);

                Assert.Throws(typeof(InvalidOperationException), () => issue.WorkflowTransition("foo"));
            }
Ejemplo n.º 18
0
            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);
            }
Ejemplo n.º 19
0
            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);
            }
Ejemplo n.º 20
0
            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));
            }
Ejemplo n.º 21
0
            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"));
            }
Ejemplo n.º 22
0
            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);
            }
Ejemplo n.º 23
0
            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));
            }
Ejemplo n.º 24
0
            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);
        }
Ejemplo n.º 26
0
            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));
            }
Ejemplo n.º 27
0
            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));
            }
Ejemplo n.º 28
0
            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"));
            }
Ejemplo n.º 29
0
            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));
            }
Ejemplo n.º 30
0
            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]);
            }