X-Git-Url: http://git.osdn.net/view?p=opentween%2Fopen-tween.git;a=blobdiff_plain;f=OpenTween.Tests%2FApi%2FGraphQL%2FLikesRequestTest.cs;fp=OpenTween.Tests%2FApi%2FGraphQL%2FLikesRequestTest.cs;h=accc445c9ed4aafee8bbf6c832dd8f77e0183974;hp=0000000000000000000000000000000000000000;hb=18aca2fb0b0ccd6efb8808576d32c198d2c4a4a7;hpb=53470f26ac6b4403e0a30f4729b8bff0894bdc82 diff --git a/OpenTween.Tests/Api/GraphQL/LikesRequestTest.cs b/OpenTween.Tests/Api/GraphQL/LikesRequestTest.cs new file mode 100644 index 00000000..accc445c --- /dev/null +++ b/OpenTween.Tests/Api/GraphQL/LikesRequestTest.cs @@ -0,0 +1,95 @@ +// OpenTween - Client of Twitter +// Copyright (c) 2024 kim_upsilon (@kim_upsilon) +// All rights reserved. +// +// This file is part of OpenTween. +// +// This program is free software; you can redistribute it and/or modify it +// under the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 3 of the License, or (at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +// for more details. +// +// You should have received a copy of the GNU General Public License along +// with this program. If not, see , or write to +// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, +// Boston, MA 02110-1301, USA. + +using System.Threading.Tasks; +using Moq; +using OpenTween.Connection; +using Xunit; + +namespace OpenTween.Api.GraphQL +{ + public class LikesRequestTest + { + [Fact] + public async Task Send_Test() + { + using var apiResponse = await TestUtils.CreateApiResponse("Resources/Responses/Likes.json"); + + var mock = new Mock(); + mock.Setup(x => + x.SendAsync(It.IsAny()) + ) + .Callback(x => + { + var request = Assert.IsType(x); + Assert.Equal(new("https://twitter.com/i/api/graphql/G_zHbTiwSqLm0TAK_3sNWQ/Likes"), request.RequestUri); + var query = request.Query!; + Assert.Equal(2, query.Count); + Assert.Equal("""{"userId":"12345","count":20,"includePromotedContent":false,"withClientEventToken":false,"withBirdwatchNotes":false,"withVoice":true,"withV2Timeline":true}""", query["variables"]); + Assert.True(query.ContainsKey("features")); + Assert.Equal("Likes", request.EndpointName); + }) + .ReturnsAsync(apiResponse); + + var request = new LikesRequest + { + UserId = "12345", + Count = 20, + }; + + var response = await request.Send(mock.Object); + Assert.Single(response.Tweets); + Assert.Equal("DAAHCgABGEs2Ve9AAAELAAIAAAATMTc4OTA3OTU2MDM5NDcxNTMyMggAAwAAAAEAAA", response.CursorTop); + Assert.Equal("DAAHCgABGEs2Ve8___8LAAIAAAATMTc4OTA3OTU2MDM5NDcxNTMyMggAAwAAAAIAAA", response.CursorBottom); + + mock.VerifyAll(); + } + + [Fact] + public async Task Send_RequestCursor_Test() + { + using var apiResponse = await TestUtils.CreateApiResponse("Resources/Responses/Likes.json"); + + var mock = new Mock(); + mock.Setup(x => + x.SendAsync(It.IsAny()) + ) + .Callback(x => + { + var request = Assert.IsType(x); + Assert.Equal(new("https://twitter.com/i/api/graphql/G_zHbTiwSqLm0TAK_3sNWQ/Likes"), request.RequestUri); + var query = request.Query!; + Assert.Equal("""{"userId":"12345","count":20,"includePromotedContent":false,"withClientEventToken":false,"withBirdwatchNotes":false,"withVoice":true,"withV2Timeline":true,"cursor":"aaa"}""", query["variables"]); + }) + .ReturnsAsync(apiResponse); + + var request = new LikesRequest + { + UserId = "12345", + Count = 20, + Cursor = "aaa", + }; + + await request.Send(mock.Object); + mock.VerifyAll(); + } + } +}