示例#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);
            }
示例#2
0
        /// <summary>
        /// Creates an instance of a CustomField from a remote field definition.
        /// </summary>
        public CustomField(RemoteField remoteField)
            : base(remoteField)
        {
            _remoteField = remoteField;

            if (String.IsNullOrEmpty(this.Id) && !String.IsNullOrEmpty(CustomIdentifier))
            {
                this.Id = $"customfield_{CustomIdentifier}";
            }
        }
示例#3
0
        public void WhenAddingArrayOfValues_CanSerializeAsStringArrayWhenNoSerializerIsFound()
        {
            // arrange issue
            var jira        = TestableJira.Create();
            var remoteField = new RemoteField()
            {
                id = "remotefield_id", Schema = new RemoteFieldSchema()
                {
                    Custom = "remotefield_type"
                }, IsCustomField = true, name = "Custom Field"
            };
            var customField = new CustomField(remoteField);
            var issue       = new RemoteIssue()
            {
                project = "projectKey", key = "issueKey"
            }.ToLocal(jira);

            jira.IssueFieldService.Setup(c => c.GetCustomFieldsAsync(CancellationToken.None))
            .Returns(Task.FromResult(Enumerable.Repeat(customField, 1)));

            issue.CustomFields.AddArray("Custom Field", "val1", "val2");

            // arrange serialization
            var remoteIssue = issue.ToRemote();
            var converter   = new RemoteIssueJsonConverter(new List <RemoteField> {
                remoteField
            }, new Dictionary <string, ICustomFieldValueSerializer>());
            var serializerSettings = new JsonSerializerSettings();

            serializerSettings.NullValueHandling = NullValueHandling.Ignore;
            serializerSettings.Converters.Add(converter);
            var issueWrapper = new RemoteIssueWrapper(remoteIssue);

            // act
            var issueJson = JsonConvert.SerializeObject(issueWrapper, serializerSettings);

            // assert
            var jObject          = JObject.Parse(issueJson);
            var remoteFieldValue = jObject["fields"]["remotefield_id"];
            var valueArray       = remoteFieldValue.ToObject <string[]>();

            Assert.Equal(2, valueArray.Length);
            Assert.Contains("val1", valueArray);
            Assert.Contains("val2", valueArray);
        }
示例#4
0
        public void CanDeserializeArrayOfStrings_WhenCustomFieldValueIsArrayAndNoSerializerIsRegistered()
        {
            // arrange issue
            var remoteField = new RemoteField()
            {
                id = "customfield_id", Schema = new RemoteFieldSchema()
                {
                    Custom = "customfield_type"
                }, IsCustomField = true, name = "Custom Field"
            };
            var jObject = JObject.FromObject(new
            {
                fields = new
                {
                    //project = "projectKey",
                    key            = "issueKey",
                    customfield_id = new string[] { "val1", "val2" }
                }
            });

            // arrange serialization
            var converter = new RemoteIssueJsonConverter(new List <RemoteField> {
                remoteField
            }, new Dictionary <string, ICustomFieldValueSerializer>());
            var serializerSettings = new JsonSerializerSettings();

            serializerSettings.NullValueHandling = NullValueHandling.Ignore;
            serializerSettings.Converters.Add(converter);

            // act
            var remoteIssue = JsonConvert.DeserializeObject <RemoteIssueWrapper>(jObject.ToString(), serializerSettings).RemoteIssue;

            // assert
            var customFieldValues = remoteIssue.customFieldValues.First().values;

            Assert.Equal(2, customFieldValues.Length);
            Assert.Contains("val1", customFieldValues);
            Assert.Contains("val2", customFieldValues);
        }
示例#5
0
            public void ExcludesCustomFieldsNotModified()
            {
                var jira        = TestableJira.Create();
                var remoteField = new RemoteField()
                {
                    id   = "CustomField1",
                    name = "My Custom Field"
                };
                var remoteCustomFieldValue = new RemoteCustomFieldValue()
                {
                    customfieldId = "CustomField1",
                    values        = new string[1] {
                        "My Value"
                    }
                };
                var remoteIssue = new RemoteIssue()
                {
                    key               = "TST-1",
                    project           = "TST",
                    type              = "1",
                    customFieldValues = new RemoteCustomFieldValue[1] {
                        remoteCustomFieldValue
                    }
                };

                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.GetIssuesFromJql("TST-1").First();

                var result = GetUpdatedFieldsForIssue(issue);

                Assert.Equal(0, result.Length);
            }
示例#6
0
 /// <summary>
 /// Creates an instance of a CustomField from a remote field definition.
 /// </summary>
 public CustomField(RemoteField remoteField)
     : base(remoteField)
 {
     _remoteField = remoteField;
 }
 internal CustomField(RemoteField remoteField)
     : base(remoteField)
 {
     _remoteField = remoteField;
 }