X-Git-Url: http://git.osdn.net/view?p=opentween%2Fopen-tween.git;a=blobdiff_plain;f=OpenTween.Tests%2FApi%2FGraphQL%2FFavoriteTweetRequestTest.cs;fp=OpenTween.Tests%2FApi%2FGraphQL%2FFavoriteTweetRequestTest.cs;h=cef9242bf904adc85b2fe2d4ab0874e6af94e887;hp=0000000000000000000000000000000000000000;hb=8ff1185188f5f00681f3b9db53562be89f1f7bf8;hpb=6879025cc2b023775461794e6e0d6097ed89c61e diff --git a/OpenTween.Tests/Api/GraphQL/FavoriteTweetRequestTest.cs b/OpenTween.Tests/Api/GraphQL/FavoriteTweetRequestTest.cs new file mode 100644 index 00000000..cef9242b --- /dev/null +++ b/OpenTween.Tests/Api/GraphQL/FavoriteTweetRequestTest.cs @@ -0,0 +1,78 @@ +// 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 FavoriteTweetRequestTest + { + [Fact] + public async Task Send_Test() + { + using var apiResponse = await TestUtils.CreateApiResponse("Resources/Responses/FavoriteTweet.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/lI07N6Otwv1PhnEgXILM7A/FavoriteTweet"), request.RequestUri); + Assert.Equal("""{"variables":{"tweet_id":"12345"},"queryId":"lI07N6Otwv1PhnEgXILM7A"}""", request.JsonString); + }) + .ReturnsAsync(apiResponse); + + var request = new FavoriteTweetRequest + { + TweetId = new("12345"), + }; + + await request.Send(mock.Object); + + mock.VerifyAll(); + } + + [Fact] + public async Task Send_AlreadyFavoritedTest() + { + using var apiResponse = await TestUtils.CreateApiResponse("Resources/Responses/FavoriteTweet_AlreadyFavorited.json"); + + var mock = new Mock(); + mock.Setup(x => x.SendAsync(It.IsAny())) + .ReturnsAsync(apiResponse); + + var request = new FavoriteTweetRequest + { + TweetId = new("12345"), + }; + + // 重複によるエラーレスポンスが返っているが例外を発生させない + await request.Send(mock.Object); + + mock.VerifyAll(); + } + } +}