Esempio n. 1
0
 public SqlServerFhirResourceChangeCaptureFixture()
 {
     _databaseName             = $"FHIRRESOURCECHANGEINTTEST_{DateTimeOffset.UtcNow.ToUnixTimeSeconds()}_{BigInteger.Abs(new BigInteger(Guid.NewGuid().ToByteArray()))}";
     _coreFeatureConfigOptions = Options.Create(new CoreFeatureConfiguration()
     {
         SupportsResourceChangeCapture = true
     });
     _sqlFixture     = new SqlServerFhirStorageTestsFixture(SchemaVersionConstants.Max, _databaseName, _coreFeatureConfigOptions);
     _storageFixture = new FhirStorageTestsFixture(_sqlFixture);
 }
        public async Task GivenADatabaseSupportsResourceChangeCapture_WhenResourceChangeCaptureIsDisabled_ThenResourceChangesShouldNotBeCreated()
        {
            FhirStorageTestsFixture fhirStorageTestsFixture = null;

            try
            {
                string databaseName = $"FHIRRESOURCECHANGEDISABLEDTEST_{DateTimeOffset.UtcNow.ToUnixTimeSeconds()}_{BigInteger.Abs(new BigInteger(Guid.NewGuid().ToByteArray()))}";

                // this will either create the database or upgrade the schema.
                var coreFeatureConfigOptions = Options.Create(new CoreFeatureConfiguration()
                {
                    SupportsResourceChangeCapture = false
                });
                var sqlFixture = new SqlServerFhirStorageTestsFixture(SchemaVersionConstants.Max, databaseName, coreFeatureConfigOptions);

                fhirStorageTestsFixture = new FhirStorageTestsFixture(sqlFixture);
                await fhirStorageTestsFixture.InitializeAsync();

                Mediator mediator = fhirStorageTestsFixture.Mediator;

                // add a new resource
                var saveResult = await mediator.UpsertResourceAsync(Samples.GetJsonSample("Weight"));

                // update the resource
                var newResourceValues = Samples.GetJsonSample("WeightInGrams").ToPoco();
                newResourceValues.Id = saveResult.RawResourceElement.Id;

                // save updated resource
                var updateResult = await mediator.UpsertResourceAsync(newResourceValues.ToResourceElement(), WeakETag.FromVersionId(saveResult.RawResourceElement.VersionId));

                // delete the resource
                var deletedResourceKey = await mediator.DeleteResourceAsync(new ResourceKey("Observation", saveResult.RawResourceElement.Id), DeleteOperation.SoftDelete);

                // get resource changes
                var resourceChangeDataStore = new SqlServerFhirResourceChangeDataStore(sqlFixture.SqlConnectionWrapperFactory, NullLogger <SqlServerFhirResourceChangeDataStore> .Instance, sqlFixture.SchemaInformation);
                var resourceChanges         = await resourceChangeDataStore.GetRecordsAsync(1, 200, CancellationToken.None);

                Assert.NotNull(resourceChanges);
                Assert.Empty(resourceChanges);
            }
            finally
            {
                await fhirStorageTestsFixture?.DisposeAsync();
            }
        }