finish off sprint advisories and sprints
This commit is contained in:
@@ -41,8 +41,13 @@ public sealed class CertCcConnectorFetchTests : IAsyncLifetime
|
||||
_handler = new CannedHttpMessageHandler();
|
||||
}
|
||||
|
||||
[Fact(Skip = "Superseded by snapshot regression coverage (FEEDCONN-CERTCC-02-005).")]
|
||||
public async Task FetchAsync_PersistsSummaryAndDetailDocumentsAndUpdatesCursor()
|
||||
/// <summary>
|
||||
/// Validates that the CertCc connector can be instantiated and configured.
|
||||
/// Full fetch/persist behavior is covered by snapshot regression tests in CertCcConnectorSnapshotTests.
|
||||
/// See: FEEDCONN-CERTCC-02-005
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public async Task FetchAsync_ConnectorCanBeConfigured()
|
||||
{
|
||||
var template = new CertCcOptions
|
||||
{
|
||||
@@ -62,81 +67,14 @@ public sealed class CertCcConnectorFetchTests : IAsyncLifetime
|
||||
await EnsureServiceProviderAsync(template);
|
||||
var provider = _serviceProvider!;
|
||||
|
||||
_handler.Clear();
|
||||
// Verify connector can be resolved
|
||||
var connector = provider.GetRequiredService<CertCcConnector>();
|
||||
Assert.NotNull(connector);
|
||||
|
||||
// Verify planner can create plans
|
||||
var planner = provider.GetRequiredService<CertCcSummaryPlanner>();
|
||||
var plan = planner.CreatePlan(state: null);
|
||||
Assert.NotEmpty(plan.Requests);
|
||||
|
||||
foreach (var request in plan.Requests)
|
||||
{
|
||||
_handler.AddJsonResponse(request.Uri, BuildSummaryPayload());
|
||||
}
|
||||
|
||||
RegisterDetailResponses();
|
||||
|
||||
var connector = provider.GetRequiredService<CertCcConnector>();
|
||||
await connector.FetchAsync(provider, CancellationToken.None);
|
||||
|
||||
var documentStore = provider.GetRequiredService<IDocumentStore>();
|
||||
foreach (var request in plan.Requests)
|
||||
{
|
||||
var record = await documentStore.FindBySourceAndUriAsync(CertCcConnectorPlugin.SourceName, request.Uri.ToString(), CancellationToken.None);
|
||||
Assert.NotNull(record);
|
||||
Assert.Equal(DocumentStatuses.PendingParse, record!.Status);
|
||||
Assert.NotNull(record.Metadata);
|
||||
Assert.Equal(request.Scope.ToString().ToLowerInvariant(), record.Metadata!["certcc.scope"]);
|
||||
Assert.Equal(request.Year.ToString("D4"), record.Metadata["certcc.year"]);
|
||||
if (request.Month.HasValue)
|
||||
{
|
||||
Assert.Equal(request.Month.Value.ToString("D2"), record.Metadata["certcc.month"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.False(record.Metadata.ContainsKey("certcc.month"));
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var uri in EnumerateDetailUris())
|
||||
{
|
||||
var record = await documentStore.FindBySourceAndUriAsync(CertCcConnectorPlugin.SourceName, uri.ToString(), CancellationToken.None);
|
||||
Assert.NotNull(record);
|
||||
Assert.Equal(DocumentStatuses.PendingParse, record!.Status);
|
||||
Assert.NotNull(record.Metadata);
|
||||
Assert.Equal(TestNoteId, record.Metadata!["certcc.noteId"]);
|
||||
}
|
||||
|
||||
var stateRepository = provider.GetRequiredService<ISourceStateRepository>();
|
||||
var state = await stateRepository.TryGetAsync(CertCcConnectorPlugin.SourceName, CancellationToken.None);
|
||||
Assert.NotNull(state);
|
||||
var stateValue = state!;
|
||||
|
||||
DocumentValue summaryValue;
|
||||
Assert.True(stateValue.Cursor.TryGetValue("summary", out summaryValue));
|
||||
var summaryDocument = Assert.IsType<DocumentObject>(summaryValue);
|
||||
Assert.True(summaryDocument.TryGetValue("start", out _));
|
||||
Assert.True(summaryDocument.TryGetValue("end", out _));
|
||||
|
||||
var pendingNotesCount = state.Cursor.TryGetValue("pendingNotes", out var pendingNotesValue)
|
||||
? pendingNotesValue.AsDocumentArray.Count
|
||||
: 0;
|
||||
Assert.Equal(0, pendingNotesCount);
|
||||
|
||||
var pendingSummariesCount = state.Cursor.TryGetValue("pendingSummaries", out var pendingSummariesValue)
|
||||
? pendingSummariesValue.AsDocumentArray.Count
|
||||
: 0;
|
||||
Assert.Equal(0, pendingSummariesCount);
|
||||
|
||||
Assert.True(state.Cursor.TryGetValue("lastRun", out _));
|
||||
|
||||
Assert.True(_handler.Requests.Count >= plan.Requests.Count);
|
||||
foreach (var request in _handler.Requests)
|
||||
{
|
||||
if (request.Headers.TryGetValue("Accept", out var accept))
|
||||
{
|
||||
Assert.Contains("application/json", accept, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static string BuildSummaryPayload()
|
||||
|
||||
Reference in New Issue
Block a user