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() + /// + /// Checks if the Id property should be serialized. + /// + /// True if the property should be serialized, false otherwise. + 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() /// The mm offset. /// 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. - [JsonProperty("mm_offset")] + [JsonProperty("minute_offset")] public long? MinuteOffset { get; set; } /// 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) /// /// The relative. /// For a time-based reminder specified in minutes from now. - 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() /// /// The identifier. [JsonProperty("id")] - public int Id { get; internal set; } + public string Id { get; internal set; } /// /// Gets the image identifier.