aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2019-11-20 16:49:12 +0800
committercrupest <crupest@outlook.com>2019-11-20 16:49:12 +0800
commit33318b9244a82fee6d711aa15f853e1590ff13f7 (patch)
tree788b8acdf1141c757cb3226d3cd5f64594386b8f
parentac3a053868787f682ccf6b31a0023082fd8c9f37 (diff)
downloadtimeline-33318b9244a82fee6d711aa15f853e1590ff13f7.tar.gz
timeline-33318b9244a82fee6d711aa15f853e1590ff13f7.tar.bz2
timeline-33318b9244a82fee6d711aa15f853e1590ff13f7.zip
Get posts should return posts ordered by time.
-rw-r--r--Timeline.Tests/IntegratedTests/PersonalTimelineTest.cs29
-rw-r--r--Timeline/Services/TimelineService.cs2
2 files changed, 29 insertions, 2 deletions
diff --git a/Timeline.Tests/IntegratedTests/PersonalTimelineTest.cs b/Timeline.Tests/IntegratedTests/PersonalTimelineTest.cs
index 43549d1a..483499fb 100644
--- a/Timeline.Tests/IntegratedTests/PersonalTimelineTest.cs
+++ b/Timeline.Tests/IntegratedTests/PersonalTimelineTest.cs
@@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Mvc.Testing;
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Timeline.Models;
@@ -461,7 +462,33 @@ namespace Timeline.Tests.IntegratedTests
Time = createRes2.Time
});
}
- // TODO! Add post not exist tests.
+ }
+ }
+
+ [Fact]
+ public async Task GetPost_Should_Ordered()
+ {
+ using var client = await CreateClientAsUser();
+
+ async Task<long> CreatePost(DateTime time)
+ {
+ var res = await client.PostAsJsonAsync("users/user/timeline/postop/create",
+ new TimelinePostCreateRequest { Content = "aaa", Time = time });
+ return res.Should().HaveStatusCode(200)
+ .And.HaveJsonBody<TimelinePostCreateResponse>()
+ .Which.Id;
+ }
+
+ var now = DateTime.Now;
+ var id0 = await CreatePost(now.AddDays(1));
+ var id1 = await CreatePost(now.AddDays(-1));
+ var id2 = await CreatePost(now);
+
+ {
+ var res = await client.GetAsync("users/user/timeline/posts");
+ res.Should().HaveStatusCode(200)
+ .And.HaveJsonBody<TimelinePostInfo[]>()
+ .Which.Select(p => p.Id).Should().Equal(id1, id2, id0);
}
}
}
diff --git a/Timeline/Services/TimelineService.cs b/Timeline/Services/TimelineService.cs
index 9ae9dc1c..affcff2e 100644
--- a/Timeline/Services/TimelineService.cs
+++ b/Timeline/Services/TimelineService.cs
@@ -348,7 +348,7 @@ namespace Timeline.Services
throw new ArgumentNullException(nameof(name));
var timelineId = await FindTimelineId(name);
- var postEntities = await Database.TimelinePosts.Where(p => p.TimelineId == timelineId && p.Content != null).ToListAsync();
+ var postEntities = await Database.TimelinePosts.OrderBy(p => p.Time).Where(p => p.TimelineId == timelineId && p.Content != null).ToListAsync();
var posts = new List<TimelinePostInfo>(await Task.WhenAll(postEntities.Select(async p => new TimelinePostInfo
{
Id = p.Id,