.NET API
WorkflowDefinitionStoreContract
Tracon.Testing.Contracts.Xunit.dllBehavior tests for the IWorkflowDefinitionStore contract.
public abstract class WorkflowDefinitionStoreContract : TenantIsolationContract<IWorkflowDefinitionStore>, IAsyncLifetime, IAsyncDisposableInheritance
Section titled “Inheritance”object ← TenantIsolationContract<IWorkflowDefinitionStore> ← WorkflowDefinitionStoreContract
Implements
Section titled “Implements”IAsyncLifetime, IAsyncDisposable
Inherited Members
Section titled “Inherited Members”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()
Remarks
Section titled “Remarks”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.
Constructors
Section titled “Constructors”WorkflowDefinitionStoreContract()
Section titled “ WorkflowDefinitionStoreContract()”protected WorkflowDefinitionStoreContract()Methods
Section titled “Methods”All_fields_survive_the_round_trip()
Section titled “ All_fields_survive_the_round_trip()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 48)]public Task All_fields_survive_the_round_trip()Returns
Section titled “Returns”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()Returns
Section titled “Returns”CountAsync(string)
Section titled “ CountAsync(string)”Reports how many records the given tenant sees through the listing endpoint.
protected override ValueTask<int> CountAsync(string tenantId)Parameters
Section titled “Parameters”tenantId string
The reading tenant.
Returns
Section titled “Returns”The number of records seen.
Deleted_definition_is_not_read_back()
Section titled “ Deleted_definition_is_not_read_back()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 197)]public Task Deleted_definition_is_not_read_back()Returns
Section titled “Returns”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()Returns
Section titled “Returns”Every_save_increments_the_version()
Section titled “ Every_save_increments_the_version()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 135)]public Task Every_save_increments_the_version()Returns
Section titled “Returns”ExistsAsync(string, object)
Section titled “ ExistsAsync(string, object)”Reports whether the record is visible from the given tenant’s viewpoint.
protected override ValueTask<bool> ExistsAsync(string tenantId, object key)Parameters
Section titled “Parameters”tenantId string
The reading tenant.
key object
The key returned by TenantIsolationContract.SeedAsync.
Returns
Section titled “Returns”true if the record is visible.
Incoming_version_value_is_ignored()
Section titled “ Incoming_version_value_is_ignored()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 149)]public Task Incoming_version_value_is_ignored()Returns
Section titled “Returns”Listing_is_sorted_by_name()
Section titled “ Listing_is_sorted_by_name()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 181)]public Task Listing_is_sorted_by_name()Returns
Section titled “Returns”Magentic_manager_name_is_preserved()
Section titled “ Magentic_manager_name_is_preserved()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 113)]public Task Magentic_manager_name_is_preserved()Returns
Section titled “Returns”Node_list_survives_the_round_trip()
Section titled “ Node_list_survives_the_round_trip()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 84)]public Task Node_list_survives_the_round_trip()Returns
Section titled “Returns”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()Returns
Section titled “Returns”Saved_definition_is_read_back()
Section titled “ Saved_definition_is_read_back()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/WorkflowDefinitionStoreContract.cs", 32)]public Task Saved_definition_is_read_back()Returns
Section titled “Returns”SeedAsync(string, string)
Section titled “ SeedAsync(string, string)”Writes a sample record for the given tenant.
protected override ValueTask<object> SeedAsync(string tenantId, string name)Parameters
Section titled “Parameters”tenantId string
The tenant that owns the record.
name string
The name distinguishing the record. The same name may be used by two tenants.
Returns
Section titled “Returns”The key to use for reading the record back.
TryDeleteAsync(string, object)
Section titled “ TryDeleteAsync(string, object)”Attempts to delete the record on behalf of the given tenant.
protected override ValueTask<bool?> TryDeleteAsync(string tenantId, object key)Parameters
Section titled “Parameters”tenantId string
The tenant attempting the delete.
key object
The key returned by TenantIsolationContract.SeedAsync.
Returns
Section titled “Returns”true if the delete succeeded, false if the record was not found; null if the store does not offer deletion.