OSDN Git Service

/notifications/mentions.json を使用したReplyタブの更新に対応
[opentween/open-tween.git] / OpenTween.Tests / Api / TwitterV2 / NotificationsMentionsRequestTest.cs
1 // OpenTween - Client of Twitter
2 // Copyright (c) 2024 kim_upsilon (@kim_upsilon) <https://upsilo.net/~upsilon/>
3 // All rights reserved.
4 //
5 // This file is part of OpenTween.
6 //
7 // This program is free software; you can redistribute it and/or modify it
8 // under the terms of the GNU General Public License as published by the Free
9 // Software Foundation; either version 3 of the License, or (at your option)
10 // any later version.
11 //
12 // This program is distributed in the hope that it will be useful, but
13 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 // for more details.
16 //
17 // You should have received a copy of the GNU General Public License along
18 // with this program. If not, see <http://www.gnu.org/licenses/>, or write to
19 // the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
20 // Boston, MA 02110-1301, USA.
21
22 using System.Threading.Tasks;
23 using Moq;
24 using OpenTween.Api.GraphQL;
25 using OpenTween.Connection;
26 using Xunit;
27
28 namespace OpenTween.Api.TwitterV2
29 {
30     public class NotificationsMentionsRequestTest
31     {
32         [Fact]
33         public async Task Send_Test()
34         {
35             using var apiResponse = await TestUtils.CreateApiResponse("Resources/Responses/NotificationsMentions.json");
36
37             var mock = new Mock<IApiConnection>();
38             mock.Setup(x =>
39                     x.SendAsync(It.IsAny<IHttpRequest>())
40                 )
41                 .Callback<IHttpRequest>(x =>
42                 {
43                     var request = Assert.IsType<GetRequest>(x);
44                     Assert.Equal(new("https://twitter.com/i/api/2/notifications/mentions.json"), request.RequestUri);
45                     var query = request.Query!;
46                     Assert.Equal("20", query["count"]);
47                     Assert.DoesNotContain("cursor", query);
48                     Assert.Equal("/2/notifications/mentions", request.EndpointName);
49                 })
50                 .ReturnsAsync(apiResponse);
51
52             var request = new NotificationsMentionsRequest()
53             {
54                 Count = 20,
55             };
56
57             var response = await request.Send(mock.Object);
58             var status = Assert.Single(response.Statuses);
59             Assert.Equal("1748671085438988794", status.IdStr);
60             Assert.Equal("40480664", status.User.IdStr);
61
62             Assert.Equal("DAABDAABCgABAAAAAC4B0ZQIAAIAAAACCAADm5udsQgABCaolIMACwACAAAAC0FZMG1xVjB6VEZjAAA", response.CursorTop);
63             Assert.Equal("DAACDAABCgABAAAAAC4B0ZQIAAIAAAACCAADm5udsQgABCaolIMACwACAAAAC0FZMG1xVjB6VEZjAAA", response.CursorBottom);
64
65             mock.VerifyAll();
66         }
67
68         [Fact]
69         public async Task Send_RequestCursorTest()
70         {
71             using var apiResponse = await TestUtils.CreateApiResponse("Resources/Responses/NotificationsMentions.json");
72
73             var mock = new Mock<IApiConnection>();
74             mock.Setup(x =>
75                     x.SendAsync(It.IsAny<IHttpRequest>())
76                 )
77                 .Callback<IHttpRequest>(x =>
78                 {
79                     var request = Assert.IsType<GetRequest>(x);
80                     Assert.Equal(new("https://twitter.com/i/api/2/notifications/mentions.json"), request.RequestUri);
81                     var query = request.Query!;
82                     Assert.Equal("20", query["count"]);
83                     Assert.Equal("aaa", query["cursor"]);
84                     Assert.Equal("/2/notifications/mentions", request.EndpointName);
85                 })
86                 .ReturnsAsync(apiResponse);
87
88             var request = new NotificationsMentionsRequest()
89             {
90                 Count = 20,
91                 Cursor = "aaa",
92             };
93
94             await request.Send(mock.Object);
95             mock.VerifyAll();
96         }
97     }
98 }