// OpenTween - Client of Twitter
// Copyright (c) 2023 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;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Moq;
using OpenTween.Api.TwitterV2;
using OpenTween.Connection;
using Xunit;
namespace OpenTween.Api.GraphQL
{
public class ListLatestTweetsTimelineRequestTest
{
[Fact]
public async Task Send_Test()
{
using var responseStream = File.OpenRead("Resources/Responses/ListLatestTweetsTimeline_SimpleTweet.json");
var mock = new Mock();
mock.Setup(x =>
x.GetStreamAsync(It.IsAny(), It.IsAny>())
)
.Callback>((url, param) =>
{
Assert.Equal(new("https://twitter.com/i/api/graphql/6ClPnsuzQJ1p7-g32GQw9Q/ListLatestTweetsTimeline"), url);
Assert.Equal(2, param.Count);
Assert.Equal("""{"listId":"1675863884757110790","count":20}""", param["variables"]);
Assert.True(param.ContainsKey("features"));
})
.ReturnsAsync(responseStream);
var request = new ListLatestTweetsTimelineRequest(listId: "1675863884757110790")
{
Count = 20,
};
var response = await request.Send(mock.Object).ConfigureAwait(false);
Assert.Single(response.Tweets);
Assert.Equal("DAABCgABF0HfRMi__7QKAAIVAxUYmFWQAwgAAwAAAAIAAA", response.CursorBottom);
mock.VerifyAll();
}
[Fact]
public async Task Send_RequestCursor_Test()
{
using var responseStream = File.OpenRead("Resources/Responses/ListLatestTweetsTimeline_SimpleTweet.json");
var mock = new Mock();
mock.Setup(x =>
x.GetStreamAsync(It.IsAny(), It.IsAny>())
)
.Callback>((url, param) =>
{
Assert.Equal(new("https://twitter.com/i/api/graphql/6ClPnsuzQJ1p7-g32GQw9Q/ListLatestTweetsTimeline"), url);
Assert.Equal(2, param.Count);
Assert.Equal("""{"listId":"1675863884757110790","count":20,"cursor":"aaa"}""", param["variables"]);
Assert.True(param.ContainsKey("features"));
})
.ReturnsAsync(responseStream);
var request = new ListLatestTweetsTimelineRequest(listId: "1675863884757110790")
{
Count = 20,
Cursor = "aaa",
};
await request.Send(mock.Object).ConfigureAwait(false);
mock.VerifyAll();
}
}
}