Add outline import feature; drop Dto naming, map entities at the API boundary
Services now return entities; endpoints (and the agent toolsets) map to *Response records instead of services building wire DTOs themselves. Also brings in the outline-import agent, MCP tool, ledger and web dialog that were already in progress on disk.
This commit is contained in:
@@ -91,8 +91,8 @@ public class BeatServiceTests : ServiceTestFixture
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(beat.CharacterName, Is.EqualTo("Ines"));
|
||||
Assert.That(beat.SceneTitle, Is.EqualTo("The dock at dawn"));
|
||||
Assert.That(beat.Character!.Name, Is.EqualTo("Ines"));
|
||||
Assert.That(beat.Scene!.Title, Is.EqualTo("The dock at dawn"));
|
||||
Assert.That(beat.WhatHappened, Does.Contain("faster than she expected"));
|
||||
});
|
||||
}
|
||||
@@ -164,4 +164,25 @@ public class BeatServiceTests : ServiceTestFixture
|
||||
Assert.That(cleared.WhatHappened, Is.EqualTo("Behind the lining of the case."));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task ClearCharacter_and_ClearScene_detach_the_reference_since_a_null_id_means_leave_it_alone()
|
||||
{
|
||||
var ines = await Characters.CreateAsync(_projectId, new CreateCharacterRequest("Ines"));
|
||||
var scene = await Scenes.CreateAsync(_chapterId, new CreateSceneRequest("The dock at dawn"));
|
||||
var beat = await Beats.CreateAsync(_chapterId, new CreateBeatRequest(
|
||||
"She burns the atlas", CharacterId: ines.Id, SceneId: scene.Id));
|
||||
|
||||
var untouched = (await Beats.UpdateAsync(beat.Id, new UpdateBeatRequest(Title: "She burns it")))!;
|
||||
Assert.That(untouched.Character!.Name, Is.EqualTo("Ines"));
|
||||
|
||||
var cleared = (await Beats.UpdateAsync(
|
||||
beat.Id, new UpdateBeatRequest(ClearCharacter: true, ClearScene: true)))!;
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(cleared.Character, Is.Null);
|
||||
Assert.That(cleared.Scene, Is.Null);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user