Skip to content

Commit

Permalink
#1609. Исправляет баг сериализации
Browse files Browse the repository at this point in the history
  • Loading branch information
inyutin-maxim committed Feb 18, 2024
1 parent 02b5b20 commit 33760d7
Show file tree
Hide file tree
Showing 9 changed files with 378 additions and 106 deletions.
35 changes: 35 additions & 0 deletions VkNet.Tests/Categories/Polls/GetVotersTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using FluentAssertions;
using VkNet.Model;
using VkNet.Tests.Infrastructure;
using Xunit;

namespace VkNet.Tests.Categories.Polls;

public class GetVotersTest : CategoryBaseTest
{
protected override string Folder => "Polls";

[Fact(DisplayName = "Баг 1609. Ошибка при получении голосований")]
public void GetVoters()
{
Url = "https://api.vk.com/method/polls.getVoters";

ReadCategoryJsonPath(nameof(GetVoters));

var pollsGetVotersParams = new PollsGetVotersParams
{
OwnerId = -145005178,
PollId = 928754744,
AnswersIds =
[
2501159906,
2501159907
]
};

var pollAnswerVotersList = Api.PollsCategory.GetVoters(pollsGetVotersParams);

pollAnswerVotersList.Should()
.NotBeEmpty();
}
}
167 changes: 167 additions & 0 deletions VkNet.Tests/TestData/Categories/Polls/GetVoters.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
{
"response": [
{
"answer_id": 2501159906,
"users": {
"count": 60,
"items": [
318635224,
778883494,
94201706,
623350854,
201488398,
213530408,
434528365,
217467544,
311704080,
247818861,
215639484,
66934532,
447883684,
619432159,
254058506,
151870764,
257425714,
295098246,
350472868,
54817590,
238305686,
205425121,
429253967,
447844502,
453500207,
561997370,
194918815,
479187060,
427521444,
193032397,
266230043,
519014563,
170520086,
110523624,
143000777,
220348312,
472684673,
294508579,
366986220,
188342596,
206575863,
229296066,
145777129,
392153898,
312602842,
102304468,
421298985,
504854790,
502775095,
175214268,
171952781,
319997504,
176266488,
512806749,
139403830,
337996293,
251943149,
180493831,
210044998,
628795343
]
}
},
{
"answer_id": 2501159907,
"users": {
"count": 87,
"items": [
168465174,
274754699,
306611621,
135598472,
191759022,
521684931,
324136148,
171739713,
200442287,
320036357,
147545346,
175523367,
137423888,
242220494,
256326397,
430378781,
445995892,
233548445,
731203998,
617413957,
94573753,
433750147,
366048147,
301464586,
143520524,
471605790,
161913415,
407063258,
463254275,
387067154,
630966769,
413158803,
144293813,
189123462,
175418693,
265750836,
252748506,
192714066,
257907920,
147834724,
323306622,
503557478,
239667963,
227911949,
215597196,
401622393,
497503979,
325164033,
368533700,
331192219,
120454286,
502763971,
138445466,
174823688,
216573589,
143004393,
342860417,
539544387,
328868093,
294170655,
34477394,
199984489,
280874358,
421912776,
305732877,
160791608,
153607802,
397393793,
383192662,
205835602,
503548267,
35310705,
276256203,
151401740,
251902560,
143394843,
165269567,
261407405,
205981670,
200423347,
311391398,
468732163,
68688528,
197419808,
147513930,
350810139,
58810322
]
}
}
]
}
7 changes: 3 additions & 4 deletions VkNet/Abstractions/Category/Async/IPollsCategoryAsync.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
using System.Threading;
using System.Threading.Tasks;
using VkNet.Model;
using VkNet.Utils;

namespace VkNet.Abstractions;

Expand Down Expand Up @@ -84,8 +83,8 @@ Task<bool> DeleteVoteAsync(PollsDeleteVoteParams @params,
/// <remarks>
/// Страница документации ВКонтакте https://vk.com/dev/polls.GetVoters
/// </remarks>
Task<VkCollection<PollAnswerVoters>> GetVotersAsync(PollsGetVotersParams @params,
CancellationToken token = default);
Task<ReadOnlyCollection<PollAnswerVoters>> GetVotersAsync(PollsGetVotersParams @params,
CancellationToken token = default);

/// <summary>
/// Позволяет создавать опросы, которые впоследствии можно прикреплять к записям на
Expand Down Expand Up @@ -119,7 +118,7 @@ Task<Poll> CreateAsync(PollsCreateParams @params,
/// <summary>
/// Получает адрес сервера для загрузки фоновой фотографии в опрос.
/// </summary>
/// <param name="ownerId">Идеентификатор пользователя или сообщества</param>
/// <param name="ownerId">Идентификатор пользователя или сообщества</param>
/// <param name="token">Токен отмены операции</param>
/// <returns>
/// Возвращает объект с полем содержащим URL для загрузки фотографии
Expand Down
114 changes: 102 additions & 12 deletions VkNet/Abstractions/Category/IPollsCategory.cs
Original file line number Diff line number Diff line change
@@ -1,36 +1,126 @@
using System.Collections.ObjectModel;
using VkNet.Model;
using VkNet.Utils;

namespace VkNet.Abstractions;

/// <inheritdoc cref="IPollsCategoryAsync"/>
/// <summary>
/// Категория методов для работы с опросами
/// </summary>
public interface IPollsCategory : IPollsCategoryAsync
{
/// <inheritdoc cref="IPollsCategoryAsync.GetByIdAsync"/>
/// <summary>
/// Возвращает детальную информацию об опросе по его идентификатору.
/// </summary>
/// <param name="params"> Параметры </param>
/// <returns>
/// Опрос
/// </returns>
/// <remarks>
/// Страница документации ВКонтакте https://vk.com/dev/polls.GetById
/// </remarks>
Poll GetById(PollsGetByIdParams @params);

/// <inheritdoc cref="IPollsCategoryAsync.EditAsync"/>
/// <summary>
/// Позволяет редактировать созданные опросы.
/// </summary>
/// <param name="params"> Параметры </param>
/// <returns>
/// Признак успешного редактирования
/// </returns>
/// <remarks>
/// Страница документации ВКонтакте https://vk.com/dev/polls.Edit
/// </remarks>
bool Edit(PollsEditParams @params);

/// <inheritdoc cref="IPollsCategoryAsync.AddVoteAsync"/>
/// <summary>
/// Отдает голос текущего пользователя за выбранный вариант ответа в указанном
/// опросе.
/// </summary>
/// <param name="params"> Параметры </param>
/// <returns>
/// 1 — если голос текущего пользователя был отдан за выбранный вариант ответа;
/// 0 — если текущий пользователь уже голосовал в указанном опросе
/// </returns>
/// <remarks>
/// Страница документации ВКонтакте https://vk.com/dev/polls.addVote
/// </remarks>
bool AddVote(PollsAddVoteParams @params);

/// <inheritdoc cref="IPollsCategoryAsync.DeleteVoteAsync"/>
/// <summary>
/// Снимает голос текущего пользователя с выбранного варианта ответа в указанном
/// опросе.
/// </summary>
/// <param name="params"> Параметры </param>
/// <returns>
/// 1 — если голос текущего пользователя был снят с выбранного варианта ответа
/// 0 — если текущий пользователь еще не голосовал в указанном опросе или указан не
/// выбранный им вариант ответа
/// </returns>
/// <remarks>
/// Страница документации ВКонтакте https://vk.com/dev/polls.DeleteVote
/// </remarks>
bool DeleteVote(PollsDeleteVoteParams @params);

/// <inheritdoc cref="IPollsCategoryAsync.GetVotersAsync"/>
VkCollection<PollAnswerVoters> GetVoters(PollsGetVotersParams @params);
/// <summary>
/// Получает список идентификаторов пользователей, которые выбрали определенные
/// варианты ответа в опросе.
/// </summary>
/// <param name="params"> Параметры </param>
/// <returns>
/// Список ответов
/// </returns>
/// <remarks>
/// Страница документации ВКонтакте https://vk.com/dev/polls.GetVoters
/// </remarks>
ReadOnlyCollection<PollAnswerVoters> GetVoters(PollsGetVotersParams @params);

/// <inheritdoc cref="IPollsCategoryAsync.CreateAsync"/>
/// <summary>
/// Позволяет создавать опросы, которые впоследствии можно прикреплять к записям на
/// странице пользователя или
/// сообщества.
/// </summary>
/// <param name="params"> Параметры </param>
/// <returns>
/// В случае успешного создания опроса в качестве результата возвращается объект
/// опроса.
/// </returns>
/// <remarks>
/// Страница документации ВКонтакте https://vk.com/dev/polls.create
/// </remarks>
Poll Create(PollsCreateParams @params);

/// <inheritdoc cref="IPollsCategoryAsync.GetBackgroundsAsync"/>
/// <summary>
/// Получает варианты фонового изображения для опросов.
/// </summary>
/// <returns>
/// Возвращает массив объектов, описывающих фоновое изображение опроса.
/// </returns>
/// <remarks>
/// Страница документации ВКонтакте https://vk.com/dev/polls.getBackgrounds
/// </remarks>
ReadOnlyCollection<GetBackgroundsResult> GetBackgrounds();

/// <inheritdoc cref="IPollsCategoryAsync.GetPhotoUploadServerAsync"/>
/// <summary>
/// Получает адрес сервера для загрузки фоновой фотографии в опрос.
/// </summary>
/// <param name="ownerId">Идентификатор пользователя или сообщества</param>
/// <returns>
/// Возвращает объект с полем содержащим URL для загрузки фотографии
/// </returns>
/// <remarks>
/// Страница документации ВКонтакте http://vk.com/dev.php?method=polls.getPhotoUploadServer
/// </remarks>
UploadServer GetPhotoUploadServer(long ownerId);

/// <inheritdoc cref="IPollsCategoryAsync.SavePhotoAsync"/>
/// <summary>
/// Сохраняет фотографию, загруженную в опрос.
/// </summary>
/// <param name="params">Параметры</param>
/// <returns>
/// В случае успешного сохранения возвращает объект описывающий фотографию
/// </returns>
/// <remarks>
/// Страница документации ВКонтакте http://vk.com/dev/polls.savePhoto
/// </remarks>
SavePhotoResult SavePhoto(SavePhotoParams @params);
}
Loading

0 comments on commit 33760d7

Please sign in to comment.