using Kompas.Mcp.Core.Documents; using Kompas.Mcp.Core.Drawings; namespace Kompas.Mcp.Tests.Integration; /// Интеграция: технические требования чертежа (API7 IDrawingDocument.TechnicalDemand). [Trait("Category", "Integration")] [Collection(KompasCollection.Name)] public sealed class DrawingTechReqTests : IntegrationTestBase { private readonly DocumentService _docs; private readonly DrawingService _drawing; public DrawingTechReqTests(KompasFixture fx) : base(fx) { _docs = new DocumentService(fx.Session, fx.Dispatcher); _drawing = new DrawingService(fx.Session, fx.Dispatcher); } [Fact] public async Task Requirements_are_set_and_read_back() { await _docs.CreateAsync(KompasDocumentType.Drawing); try { var text = "1. Общие допуски по ГОСТ 30893.1.\n2. Острые кромки притупить."; var lines = await _drawing.SetTechnicalRequirementsAsync(text); Assert.Equal(2, lines); var readBack = await _drawing.ReadTechnicalRequirementsAsync(); Assert.Contains("Общие допуски", readBack); Assert.Contains("Острые кромки", readBack); } finally { await _docs.CloseAsync(save: false); } } [Fact] public async Task Overwrite_replaces_previous() { await _docs.CreateAsync(KompasDocumentType.Drawing); try { await _drawing.SetTechnicalRequirementsAsync("1. Первая редакция."); await _drawing.SetTechnicalRequirementsAsync("1. Вторая редакция.\n2. Ещё пункт."); var readBack = await _drawing.ReadTechnicalRequirementsAsync(); Assert.Contains("Вторая редакция", readBack); Assert.DoesNotContain("Первая редакция", readBack); } finally { await _docs.CloseAsync(save: false); } } [Fact] public async Task Empty_text_throws() { await _docs.CreateAsync(KompasDocumentType.Drawing); try { await Assert.ThrowsAsync(() => _drawing.SetTechnicalRequirementsAsync(" ")); } finally { await _docs.CloseAsync(save: false); } } [Fact] public async Task Active_document_not_drawing_throws() { await _docs.CreateAsync(KompasDocumentType.Part); // деталь, не чертёж try { await Assert.ThrowsAsync(() => _drawing.SetTechnicalRequirementsAsync("1. Требование.")); } finally { await _docs.CloseAsync(save: false); } } }