public async Task SetPublishedSchema_Update_Version() { // arrange IMongoCollection <Schema> schemas = _mongoResource.CreateCollection <Schema>(); IMongoCollection <SchemaVersion> versions = _mongoResource.CreateCollection <SchemaVersion>(); IMongoCollection <SchemaPublishReport> publishReports = _mongoResource.CreateCollection <SchemaPublishReport>(); IMongoCollection <PublishedSchema> publishedSchemas = _mongoResource.CreateCollection <PublishedSchema>(); var repository = new SchemaRepository( schemas, versions, publishReports, publishedSchemas); var initial = new PublishedSchema( Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid()); await publishedSchemas.InsertOneAsync(initial); // act Guid schemaVersionId = Guid.NewGuid(); await repository.SetPublishedSchemaAsync( new PublishedSchema( initial.Id, initial.EnvironmentId, initial.SchemaId, schemaVersionId)); // assert PublishedSchema retrieved = await publishedSchemas.AsQueryable().FirstOrDefaultAsync(); Assert.NotNull(retrieved); Assert.Equal(initial.Id, retrieved.Id); Assert.Equal(initial.EnvironmentId, retrieved.EnvironmentId); Assert.Equal(initial.SchemaId, retrieved.SchemaId); Assert.Equal(schemaVersionId, retrieved.SchemaVersionId); }
public async Task AddPublishReport() { // arrange IMongoCollection <Schema> schemas = _mongoResource.CreateCollection <Schema>(); IMongoCollection <SchemaVersion> versions = _mongoResource.CreateCollection <SchemaVersion>(); IMongoCollection <SchemaPublishReport> publishReports = _mongoResource.CreateCollection <SchemaPublishReport>(); IMongoCollection <PublishedSchema> publishedSchemas = _mongoResource.CreateCollection <PublishedSchema>(); var initial = new Schema("foo", "bar"); await schemas.InsertOneAsync(initial, options : null, default); var initialVersion = new SchemaVersion( initial.Id, "foo", DocumentHash.FromSourceText("bar"), Array.Empty <Tag>(), DateTime.UtcNow); await versions.InsertOneAsync(initialVersion, options : null, default); var initialReport = new SchemaPublishReport( initialVersion.Id, Guid.NewGuid(), Array.Empty <Issue>(), PublishState.Published, DateTime.UtcNow); var repository = new SchemaRepository( schemas, versions, publishReports, publishedSchemas); // act await repository.SetPublishReportAsync(initialReport); // assert IReadOnlyDictionary <Guid, SchemaPublishReport> retrieved = await repository.GetPublishReportsAsync(new[] { initialReport.Id }); Assert.True(retrieved.ContainsKey(initialReport.Id)); }
public async Task GetPublishReportBySchemaVersionIdAndEnvironmentId() { // arrange IMongoCollection <Schema> schemas = _mongoResource.CreateCollection <Schema>(); IMongoCollection <SchemaVersion> versions = _mongoResource.CreateCollection <SchemaVersion>(); IMongoCollection <SchemaPublishReport> publishReports = _mongoResource.CreateCollection <SchemaPublishReport>(); IMongoCollection <PublishedSchema> publishedSchemas = _mongoResource.CreateCollection <PublishedSchema>(); var initial = new Schema("foo", "bar"); await schemas.InsertOneAsync(initial, options : null, default); var initialVersion = new SchemaVersion( initial.Id, "foo", new DocumentHash("baz", "baz", HashFormat.Hex), Array.Empty <Tag>(), DateTime.UtcNow); await versions.InsertOneAsync(initialVersion, options : null, default); var initialReport = new SchemaPublishReport( initialVersion.Id, Guid.NewGuid(), Array.Empty <Issue>(), PublishState.Published, DateTime.UtcNow); await publishReports.InsertOneAsync(initialReport, options : null, default); var repository = new SchemaRepository( schemas, versions, publishReports, publishedSchemas); // act SchemaPublishReport retrieved = await repository.GetPublishReportAsync( initialReport.SchemaVersionId, initialReport.EnvironmentId); // assert Assert.Equal(initialReport.Id, retrieved.Id); }
public async Task GetSchemaVersion_By_ExternalId() { // arrange IMongoCollection <Schema> schemas = _mongoResource.CreateCollection <Schema>(); IMongoCollection <SchemaVersion> versions = _mongoResource.CreateCollection <SchemaVersion>(); IMongoCollection <SchemaPublishReport> publishReports = _mongoResource.CreateCollection <SchemaPublishReport>(); var repository = new SchemaRepository(schemas, versions, publishReports); var schema = new Schema("foo", "bar"); await repository.AddSchemaAsync(schema); var schemaVersion = new SchemaVersion( schema.Id, "bar", DocumentHash.FromSourceText("bar"), new[] { new Tag("a", "b", DateTime.UtcNow) }, DateTime.UtcNow); await repository.AddSchemaVersionAsync(schemaVersion); // act SchemaVersion retrieved = await repository.GetSchemaVersionByExternalIdAsync( schemaVersion.ExternalId); // assert Assert.NotNull(retrieved); Assert.Equal(schemaVersion.Id, retrieved.Id); Assert.Equal(schemaVersion.Published, retrieved.Published, TimeSpan.FromSeconds(1)); Assert.Equal(schemaVersion.SchemaId, retrieved.SchemaId); Assert.Equal(schemaVersion.ExternalId, retrieved.ExternalId); Assert.Equal(schemaVersion.Tags.Count, retrieved.Tags.Count); }
public async Task UpdatePublishReport() { // arrange IMongoCollection <Schema> schemas = _mongoResource.CreateCollection <Schema>(); IMongoCollection <SchemaVersion> versions = _mongoResource.CreateCollection <SchemaVersion>(); IMongoCollection <SchemaPublishReport> publishReports = _mongoResource.CreateCollection <SchemaPublishReport>(); var initial = new Schema("foo", "bar"); await schemas.InsertOneAsync(initial, options : null, default); var initialVersion = new SchemaVersion( initial.Id, "foo", "bar", Array.Empty <Tag>(), DateTime.UtcNow); await versions.InsertOneAsync(initialVersion, options : null, default); var initialReport = new SchemaPublishReport( initialVersion.Id, Guid.NewGuid(), Array.Empty <Issue>(), PublishState.Published, DateTime.UtcNow); await publishReports.InsertOneAsync(initialReport, options : null, default); var repository = new SchemaRepository(schemas, versions, publishReports); // act await repository.UpdatePublishReportAsync(new SchemaPublishReport( initialReport.Id, initialReport.SchemaVersionId, initialReport.EnvironmentId, initialReport.Issues, PublishState.Rejected, DateTime.UtcNow)); // assert IReadOnlyDictionary <Guid, SchemaPublishReport> retrieved = await repository.GetPublishReportsAsync(new[] { initialReport.Id }); Assert.Equal(PublishState.Rejected, retrieved[initialReport.Id].State); }
public async Task GetSchemas() { // arrange IMongoCollection <Schema> schemas = _mongoResource.CreateCollection <Schema>(); IMongoCollection <SchemaVersion> versions = _mongoResource.CreateCollection <SchemaVersion>(); IMongoCollection <SchemaPublishReport> publishReports = _mongoResource.CreateCollection <SchemaPublishReport>(); var initial = new Schema("foo", "bar"); await schemas.InsertOneAsync(initial, options : null, default); var repository = new SchemaRepository(schemas, versions, publishReports); // act Schema retrieved = repository.GetSchemas() .Where(t => t.Id == initial.Id) .FirstOrDefault(); // assert Assert.Equal(initial.Name, retrieved.Name); Assert.Equal(initial.Description, retrieved.Description); }