Skip to content
Tracon

RetentionPolicyStoreContract

Namespace Tracon.Testing.Contracts.Storage · Assembly Tracon.Testing.Contracts.Xunit.dll

Behavior tests for the IRetentionPolicyStore contract.

public abstract class RetentionPolicyStoreContract : TenantIsolationContract<IRetentionPolicyStore>, IAsyncLifetime, IAsyncDisposable

objectTenantIsolationContract<IRetentionPolicyStore>RetentionPolicyStoreContract

IAsyncLifetime, IAsyncDisposable

TenantIsolationContract<IRetentionPolicyStore>.TenantA, TenantIsolationContract<IRetentionPolicyStore>.TenantB, TenantIsolationContract<IRetentionPolicyStore>.CreateStoreAsync(), TenantIsolationContract<IRetentionPolicyStore>.UseAmbientTenant(MutableTenantContext), TenantIsolationContract<IRetentionPolicyStore>.InitializeAsync(), TenantIsolationContract<IRetentionPolicyStore>.DisposeAsync(), TenantIsolationContract<IRetentionPolicyStore>.OnDisposeAsync(), TenantIsolationContract<IRetentionPolicyStore>.SeedAsync(string, string), TenantIsolationContract<IRetentionPolicyStore>.ExistsAsync(string, object), TenantIsolationContract<IRetentionPolicyStore>.CountAsync(string), TenantIsolationContract<IRetentionPolicyStore>.TryDeleteAsync(string, object), TenantIsolationContract<IRetentionPolicyStore>.TryOverwriteAsync(string, string), TenantIsolationContract<IRetentionPolicyStore>.Tenant_cannot_read_another_tenants_record(), TenantIsolationContract<IRetentionPolicyStore>.Tenant_reads_its_own_record(), TenantIsolationContract<IRetentionPolicyStore>.Tenant_does_not_see_another_tenants_record_in_the_list(), TenantIsolationContract<IRetentionPolicyStore>.Tenant_cannot_delete_another_tenants_record(), TenantIsolationContract<IRetentionPolicyStore>.Same_name_lives_independently_across_two_tenants(), TenantIsolationContract<IRetentionPolicyStore>.AmbientTenant, TenantIsolationContract<IRetentionPolicyStore>.Store, object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

protected RetentionPolicyStoreContract()
[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/RetentionPolicyStoreContract.cs", 104)]
public Task Another_tenants_policy_is_not_visible()

Task

Reports how many records the given tenant sees through the listing endpoint.

protected override ValueTask<int> CountAsync(string tenantId)

tenantId string

The reading tenant.

ValueTask<int>

The number of records seen.

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/RetentionPolicyStoreContract.cs", 113)]
public Task Deleted_policy_is_not_read_back()

Task

Reports whether the record is visible from the given tenant’s viewpoint.

protected override ValueTask<bool> ExistsAsync(string tenantId, object key)

tenantId string

The reading tenant.

key object

The key returned by TenantIsolationContract.SeedAsync.

ValueTask<bool>

true if the record is visible.

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/RetentionPolicyStoreContract.cs", 140)]
public Task Failed_run_carries_the_error_message()

Task

Falls_back_to_the_wildcard_policy_when_no_tenant_specific_record_exists()

Section titled “ Falls_back_to_the_wildcard_policy_when_no_tenant_specific_record_exists()”
[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/RetentionPolicyStoreContract.cs", 79)]
public Task Falls_back_to_the_wildcard_policy_when_no_tenant_specific_record_exists()

Task

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/RetentionPolicyStoreContract.cs", 152)]
public Task Run_history_returns_newest_first()

Task

Run_is_created_and_progress_accumulates()

Section titled “ Run_is_created_and_progress_accumulates()”
[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/RetentionPolicyStoreContract.cs", 122)]
public Task Run_is_created_and_progress_accumulates()

Task

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/RetentionPolicyStoreContract.cs", 54)]
public Task Saved_policy_is_read_back()

Task

Saving_the_same_target_a_second_time_overwrites_it()

Section titled “ Saving_the_same_target_a_second_time_overwrites_it()”
[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/RetentionPolicyStoreContract.cs", 67)]
public Task Saving_the_same_target_a_second_time_overwrites_it()

Task

Writes a sample record for the given tenant.

protected override ValueTask<object> SeedAsync(string tenantId, string name)

tenantId string

The tenant that owns the record.

name string

The name distinguishing the record. The same name may be used by two tenants.

ValueTask<object>

The key to use for reading the record back.

Tenant_specific_record_takes_precedence_over_the_wildcard()

Section titled “ Tenant_specific_record_takes_precedence_over_the_wildcard()”
[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/RetentionPolicyStoreContract.cs", 91)]
public Task Tenant_specific_record_takes_precedence_over_the_wildcard()

Task

Attempts to delete the record on behalf of the given tenant.

protected override ValueTask<bool?> TryDeleteAsync(string tenantId, object key)

tenantId string

The tenant attempting the delete.

key object

The key returned by TenantIsolationContract.SeedAsync.

ValueTask<bool?>

true if the delete succeeded, false if the record was not found; null if the store does not offer deletion.

Attempts to change the record’s content on behalf of the given tenant.

protected override ValueTask<bool> TryOverwriteAsync(string tenantId, string name)

tenantId string

The tenant attempting the update.

name string

The record’s name.

ValueTask<bool>

true if the update was attempted; false if the store does not support this scenario.

The default implementation calls TenantIsolationContract.SeedAsync a second time: writing a record with the same name verifies that two tenants can carry the same name independently.