From 79184d194e2cbf1ac6a5de7e371510008ae7a5d2 Mon Sep 17 00:00:00 2001 From: ceee Date: Tue, 17 Sep 2013 22:48:35 +0200 Subject: [PATCH] fix tag parameter conversion; lead image generation; add complex item test; --- PocketSharp.Tests/AddTests.cs | 29 +++++++++++++++++++++ PocketSharp/Models/Parameters/Parameters.cs | 14 ++++++++-- PocketSharp/Models/PocketItem.cs | 2 +- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/PocketSharp.Tests/AddTests.cs b/PocketSharp.Tests/AddTests.cs index e2cb716..e7dc8dd 100644 --- a/PocketSharp.Tests/AddTests.cs +++ b/PocketSharp.Tests/AddTests.cs @@ -22,5 +22,34 @@ namespace PocketSharp.Tests itemsToDelete.Add(item.ID); } + + + [Fact] + public async Task AddComplexItem() + { + PocketItem item = await client.Add( + uri: new Uri("http://frontendplay.com"), + tags: new string[] { "blog", "frontend", "cee" }, + title: "ignored title", + tweetID: "380051788172632065" + ); + + List items = await client.Retrieve(); + PocketItem itemDesired = null; + + items.ForEach(itm => + { + if(itm.ID == item.ID) + { + itemDesired = itm; + } + }); + + Assert.NotNull(itemDesired); + Assert.Equal(itemDesired.ID, item.ID); + Assert.Equal(itemDesired.Tags.Count, 3); + + itemsToDelete.Add(item.ID); + } } } diff --git a/PocketSharp/Models/Parameters/Parameters.cs b/PocketSharp/Models/Parameters/Parameters.cs index 5ed1a1e..30a0e6c 100644 --- a/PocketSharp/Models/Parameters/Parameters.cs +++ b/PocketSharp/Models/Parameters/Parameters.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using System.Reflection; using System.Runtime.Serialization; using System.Linq; +using System.Collections; +using Newtonsoft.Json; namespace PocketSharp.Models { @@ -31,11 +33,19 @@ namespace PocketSharp.Models { DataMemberAttribute attribute = (DataMemberAttribute)propertyInfo.GetCustomAttributes(typeof(DataMemberAttributeā€Œ), false).FirstOrDefault(); string name = attribute.Name ?? propertyInfo.Name.ToLower(); + object value = propertyInfo.GetValue(this, null); - if (propertyInfo.GetValue(this, null) != null) + if (value == null) { - parameterDict.Add(name, propertyInfo.GetValue(this, null).ToString()); + continue; } + + if (value is IEnumerable && value.GetType().GetElementType() == typeof(string)) + { + value = string.Join(",", ((IEnumerable)value).Cast().Select(x => x.ToString()).ToArray()); + } + + parameterDict.Add(name, value.ToString()); } return parameterDict; diff --git a/PocketSharp/Models/PocketItem.cs b/PocketSharp/Models/PocketItem.cs index aad9793..d6c33c4 100644 --- a/PocketSharp/Models/PocketItem.cs +++ b/PocketSharp/Models/PocketItem.cs @@ -268,7 +268,7 @@ namespace PocketSharp.Models [JsonIgnore] public PocketImage LeadImage { - get { return Images.Count > 0 ? Images[0] : null; } + get { return Images != null && Images.Count > 0 ? Images[0] : null; } } ///