63 lines
2.1 KiB
C#
63 lines
2.1 KiB
C#
using System.Text.Json;
|
|
using Decky.Core.Api.Models;
|
|
using Decky.Core.Api.Requests;
|
|
|
|
namespace Decky.Core.Tests;
|
|
|
|
public sealed class CardUpdateRequestTests
|
|
{
|
|
[Fact]
|
|
public void FromCard_preserves_fields_and_serializes_explicit_null_done()
|
|
{
|
|
var card = new CardDto
|
|
{
|
|
Id = 7,
|
|
StackId = 3,
|
|
Title = "Original",
|
|
Description = "Details",
|
|
Type = "plain",
|
|
Owner = "elijah",
|
|
Order = 42,
|
|
Archived = false,
|
|
Done = DateTimeOffset.Parse("2026-07-19T12:00:00Z"),
|
|
DueDate = DateTimeOffset.Parse("2026-07-20T12:00:00Z"),
|
|
StartDate = DateTimeOffset.Parse("2026-07-18T12:00:00Z"),
|
|
Color = "d99080",
|
|
};
|
|
|
|
var request = CardUpdateRequest.FromCard(card, title: "Changed", done: null, replaceDone: true);
|
|
var json = JsonSerializer.Serialize(request, new JsonSerializerOptions(JsonSerializerDefaults.Web));
|
|
using var document = JsonDocument.Parse(json);
|
|
var root = document.RootElement;
|
|
|
|
Assert.Equal("Changed", root.GetProperty("title").GetString());
|
|
Assert.Equal("elijah", root.GetProperty("owner").GetString());
|
|
Assert.Equal("D99080", root.GetProperty("color").GetString());
|
|
Assert.Equal("2026-07-20T12:00:00+00:00", root.GetProperty("duedate").GetString());
|
|
Assert.Equal(JsonValueKind.Null, root.GetProperty("done").ValueKind);
|
|
}
|
|
|
|
[Fact]
|
|
public void FromCard_can_explicitly_clear_description_and_due_date()
|
|
{
|
|
var card = new CardDto
|
|
{
|
|
Title = "Card",
|
|
Description = "Remove me",
|
|
Type = "plain",
|
|
Owner = "admin",
|
|
DueDate = DateTimeOffset.Parse("2026-07-20T12:00:00Z"),
|
|
Color = "D99080",
|
|
};
|
|
|
|
var request = CardUpdateRequest.FromCard(
|
|
card,
|
|
description: string.Empty,
|
|
replaceDescription: true,
|
|
dueDate: null,
|
|
replaceDueDate: true);
|
|
|
|
Assert.Equal(string.Empty, request.Description);
|
|
Assert.Null(request.DueDate);
|
|
}
|
|
}
|