Skip to content
Tracon

WorkflowDefinitionStoreContract

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

Behavior tests for the IWorkflowDefinitionStore contract.

public abstract class WorkflowDefinitionStoreContract : TenantIsolationContract<IWorkflowDefinitionStore>, IAsyncLifetime, IAsyncDisposable

objectTenantIsolationContract<IWorkflowDefinitionStore>WorkflowDefinitionStoreContract

IAsyncLifetime, IAsyncDisposable

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

The in-memory store and the PostgreSQL store must pass the same scenarios. In particular, version increment and tenant isolation must behave identically in both implementations.

protected WorkflowDefinitionStoreContract()
[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 48)]
public Task All_fields_survive_the_round_trip()

Task

Another_tenants_definition_is_not_visible()

Section titled “ Another_tenants_definition_is_not_visible()”
[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 159)]
public Task Another_tenants_definition_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/WorkflowDefinitionStoreContract.cs", 197)]
public Task Deleted_definition_is_not_read_back()

Task

Deleting_a_nonexistent_definition_returns_false()

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

Task

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 135)]
public Task Every_save_increments_the_version()

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/WorkflowDefinitionStoreContract.cs", 149)]
public Task Incoming_version_value_is_ignored()

Task

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 181)]
public Task Listing_is_sorted_by_name()

Task

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

Task

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 84)]
public Task Node_list_survives_the_round_trip()

Task

Same_name_is_independent_across_tenants()

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

Task

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 32)]
public Task Saved_definition_is_read_back()

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.

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.