From 6fa220307bcbb6e4a74671f3f0949dcbe81366c1 Mon Sep 17 00:00:00 2001 From: Oleg <olsh.me@gmail.com> Date: Sun, 2 Apr 2023 15:47:48 +0300 Subject: [PATCH] Fix adding relative reminder. Fixes #24 --- .../Services/ReminersServiceTests.cs | 43 +++++++++++++++---- .../Services/UsersServiceTests.cs | 2 +- src/Todoist.Net/Models/BaseEntity.cs | 6 ++- src/Todoist.Net/Models/Reminder.cs | 2 +- src/Todoist.Net/Models/ReminderType.cs | 2 +- src/Todoist.Net/Models/UserInfo.cs | 2 +- 6 files changed, 44 insertions(+), 13 deletions(-) diff --git a/src/Todoist.Net.Tests/Services/ReminersServiceTests.cs b/src/Todoist.Net.Tests/Services/ReminersServiceTests.cs index a0ae773..bf3d8e6 100644 --- a/src/Todoist.Net.Tests/Services/ReminersServiceTests.cs +++ b/src/Todoist.Net.Tests/Services/ReminersServiceTests.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Threading.Tasks; using Todoist.Net.Models; using Todoist.Net.Tests.Extensions; @@ -21,25 +22,51 @@ public ReminersServiceTests(ITestOutputHelper outputHelper) } [Fact] - public void CreateDelete_Success() + public async Task CreateDelete_Success() { var client = TodoistClientFactory.Create(_outputHelper); var transaction = client.CreateTransaction(); - var itemId = transaction.Items.AddAsync(new Item("Temp")).Result; + var itemId = await transaction.Items.AddAsync(new Item("Temp")).ConfigureAwait(false); var reminderId = - transaction.Reminders.AddAsync(new Reminder(itemId) { DueDate = new DueDate(DateTime.UtcNow.AddDays(1)) }).Result; - transaction.CommitAsync().Wait(); + await transaction.Reminders.AddAsync(new Reminder(itemId) { DueDate = new DueDate(DateTime.UtcNow.AddDays(1)) }).ConfigureAwait(false); + await transaction.CommitAsync().ConfigureAwait(false); - var reminders = client.Reminders.GetAsync().Result; + var reminders = await client.Reminders.GetAsync().ConfigureAwait(false); Assert.True(reminders.Any()); - var reminderInfo = client.Reminders.GetAsync(reminderId).Result; + var reminderInfo = await client.Reminders.GetAsync(reminderId).ConfigureAwait(false); Assert.True(reminderInfo != null); - client.Reminders.DeleteAsync(reminderInfo.Reminder.Id).Wait(); - client.Items.DeleteAsync(itemId); + await client.Reminders.DeleteAsync(reminderInfo.Reminder.Id).ConfigureAwait(false); + await client.Items.DeleteAsync(itemId); + } + + [Fact] + public async Task AddRelativeReminder_Success() + { + var client = TodoistClientFactory.Create(_outputHelper); + + var item = new Item("Test") + { + DueDate = new DueDate(DateTime.UtcNow.AddDays(1)) + }; + + var taskId = await client.Items.AddAsync(item).ConfigureAwait(false); + + var user = await client.Users.GetCurrentAsync().ConfigureAwait(false); + var reminder = new Reminder(taskId) + { + MinuteOffset = 60, + NotifyUid = user.Id + }; + + var reminderId = await client.Reminders.AddAsync(reminder).ConfigureAwait(false); + + Assert.NotNull(reminderId.PersistentId); + + await client.Items.DeleteAsync(item.Id); } } } diff --git a/src/Todoist.Net.Tests/Services/UsersServiceTests.cs b/src/Todoist.Net.Tests/Services/UsersServiceTests.cs index 14f1c1a..fc61602 100644 --- a/src/Todoist.Net.Tests/Services/UsersServiceTests.cs +++ b/src/Todoist.Net.Tests/Services/UsersServiceTests.cs @@ -28,7 +28,7 @@ public async Task GetCurrentAsync_Success() var user = await client.Users.GetCurrentAsync(); Assert.NotNull(user); - Assert.True(user.Id > 0); + Assert.NotNull(user.Id); } [Fact] diff --git a/src/Todoist.Net/Models/BaseEntity.cs b/src/Todoist.Net/Models/BaseEntity.cs index 942a537..076f462 100644 --- a/src/Todoist.Net/Models/BaseEntity.cs +++ b/src/Todoist.Net/Models/BaseEntity.cs @@ -25,7 +25,11 @@ internal BaseEntity() [JsonProperty("id")] public ComplexId Id { get; set; } - internal bool ShouldSerializeId() + /// <summary> + /// Checks if the Id property should be serialized. + /// </summary> + /// <returns><c>True</c> if the property should be serialized, <c>false</c> otherwise.</returns> + public bool ShouldSerializeId() { return !Id.IsEmpty; } diff --git a/src/Todoist.Net/Models/Reminder.cs b/src/Todoist.Net/Models/Reminder.cs index f24ce63..2379879 100644 --- a/src/Todoist.Net/Models/Reminder.cs +++ b/src/Todoist.Net/Models/Reminder.cs @@ -63,7 +63,7 @@ internal Reminder() /// <value>The mm offset.</value> /// <remarks>The relative time in minutes before the due date of the item, in which the reminder should be triggered. /// Note, that the item should have a due date set in order to add a relative reminder.</remarks> - [JsonProperty("mm_offset")] + [JsonProperty("minute_offset")] public long? MinuteOffset { get; set; } /// <summary> diff --git a/src/Todoist.Net/Models/ReminderType.cs b/src/Todoist.Net/Models/ReminderType.cs index 586e82f..1112c0d 100644 --- a/src/Todoist.Net/Models/ReminderType.cs +++ b/src/Todoist.Net/Models/ReminderType.cs @@ -34,6 +34,6 @@ private ReminderType(string value) /// </summary> /// <value>The relative.</value> /// <remarks>For a time-based reminder specified in minutes from now.</remarks> - public static ReminderType Relative { get; } = new ReminderType("relative "); + public static ReminderType Relative { get; } = new ReminderType("relative"); } } diff --git a/src/Todoist.Net/Models/UserInfo.cs b/src/Todoist.Net/Models/UserInfo.cs index 8791696..42f11d2 100644 --- a/src/Todoist.Net/Models/UserInfo.cs +++ b/src/Todoist.Net/Models/UserInfo.cs @@ -82,7 +82,7 @@ internal UserInfo() /// </summary> /// <value>The identifier.</value> [JsonProperty("id")] - public int Id { get; internal set; } + public string Id { get; internal set; } /// <summary> /// Gets the image identifier.