private void UpdateItemsCoreTest(bool cloneItemsBeforeInsert, bool useSerializer)
{
var feed = new Feed(new Uri("http://www.test.com/rss/feed"));
feed.UpdateItems(new[] {
new FeedItem(new Uri("http://www.test.com/rss/feed/1"), new DateTimeOffset(2020, 5, 5, 12, 0, 0, new TimeSpan(1, 0, 0)), "name1", "desc", "author"),
new FeedItem(new Uri("http://www.test.com/rss/feed/2"), new DateTimeOffset(2020, 5, 7, 12, 0, 0, new TimeSpan(1, 0, 0)), "name2", "desc", "author"),
});
feed = !useSerializer ? feed : SerializerHelper.Clone(feed);
Assert.AreEqual(2, feed.Items.Count);
Assert.IsTrue(new[] { "name2", "name1" }.SequenceEqual(feed.Items.Select(x => x.Name)));
var newItems = new[]
{
new FeedItem(new Uri("http://www.test.com/rss/feed/2"), new DateTimeOffset(2020, 5, 7, 12, 0, 0, new TimeSpan(1, 0, 0)), "name2b", "desc", "author"),
new FeedItem(new Uri("http://www.test.com/rss/feed/3"), new DateTimeOffset(2020, 5, 6, 12, 0, 0, new TimeSpan(1, 0, 0)), "name3", "desc", "author"),
};
feed.UpdateItems(newItems, cloneItemsBeforeInsert: cloneItemsBeforeInsert);
Assert.AreEqual(3, feed.Items.Count);
Assert.IsTrue(new[] { "name2b", "name3", "name1" }.SequenceEqual(feed.Items.Select(x => x.Name)));
if (cloneItemsBeforeInsert)
{
Assert.AreNotSame(feed.Items[1], newItems[1]);
}
else
{
Assert.AreSame(feed.Items[1], newItems[1]);
}
}