Пример #1
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);
        }
Пример #2
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);
        }