.NET API
EvalStoreContract
Tracon.Testing.Contracts.Xunit.dllBehavior tests for the IEvalStore contract.
public abstract class EvalStoreContract : TenantIsolationContract<IEvalStore>, IAsyncLifetime, IAsyncDisposableInheritance
Section titled “Inheritance”object ← TenantIsolationContract<IEvalStore> ← EvalStoreContract
Implements
Section titled “Implements”IAsyncLifetime, IAsyncDisposable
Inherited Members
Section titled “Inherited Members”TenantIsolationContract<IEvalStore>.TenantA, TenantIsolationContract<IEvalStore>.TenantB, TenantIsolationContract<IEvalStore>.CreateStoreAsync(), TenantIsolationContract<IEvalStore>.UseAmbientTenant(MutableTenantContext), TenantIsolationContract<IEvalStore>.InitializeAsync(), TenantIsolationContract<IEvalStore>.DisposeAsync(), TenantIsolationContract<IEvalStore>.OnDisposeAsync(), TenantIsolationContract<IEvalStore>.SeedAsync(string, string), TenantIsolationContract<IEvalStore>.ExistsAsync(string, object), TenantIsolationContract<IEvalStore>.CountAsync(string), TenantIsolationContract<IEvalStore>.TryDeleteAsync(string, object), TenantIsolationContract<IEvalStore>.TryOverwriteAsync(string, string), TenantIsolationContract<IEvalStore>.Tenant_cannot_read_another_tenants_record(), TenantIsolationContract<IEvalStore>.Tenant_reads_its_own_record(), TenantIsolationContract<IEvalStore>.Tenant_does_not_see_another_tenants_record_in_the_list(), TenantIsolationContract<IEvalStore>.Tenant_cannot_delete_another_tenants_record(), TenantIsolationContract<IEvalStore>.Same_name_lives_independently_across_two_tenants(), TenantIsolationContract<IEvalStore>.AmbientTenant, TenantIsolationContract<IEvalStore>.Store, object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
Constructors
Section titled “Constructors”EvalStoreContract()
Section titled “ EvalStoreContract()”protected EvalStoreContract()Methods
Section titled “Methods”AddCaseAsync_assigns_seq_atomically()
Section titled “ AddCaseAsync_assigns_seq_atomically()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 159)]public Task AddCaseAsync_assigns_seq_atomically()Returns
Section titled “Returns”AddCaseAsync_concurrent_promotions_produce_distinct_seq()
Section titled “ AddCaseAsync_concurrent_promotions_produce_distinct_seq()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 234)]public Task AddCaseAsync_concurrent_promotions_produce_distinct_seq()Returns
Section titled “Returns”AddCaseAsync_does_not_separate_sourceless_cases_from_hand_written_ones()
Section titled “ AddCaseAsync_does_not_separate_sourceless_cases_from_hand_written_ones()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 218)]public Task AddCaseAsync_does_not_separate_sourceless_cases_from_hand_written_ones()Returns
Section titled “Returns”AddCaseAsync_returns_the_existing_case_the_second_time_for_the_same_source_run_id()
Section titled “ AddCaseAsync_returns_the_existing_case_the_second_time_for_the_same_source_run_id()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 201)]public Task AddCaseAsync_returns_the_existing_case_the_second_time_for_the_same_source_run_id()Returns
Section titled “Returns”AddCaseAsync_stores_source_fields_and_expected_fields()
Section titled “ AddCaseAsync_stores_source_fields_and_expected_fields()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 173)]public Task AddCaseAsync_stores_source_fields_and_expected_fields()Returns
Section titled “Returns”Case_result_is_recorded_and_filtered_by_tenant()
Section titled “ Case_result_is_recorded_and_filtered_by_tenant()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 305)]public Task Case_result_is_recorded_and_filtered_by_tenant()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.
DeleteSuiteAsync_also_deletes_its_cases_and_runs()
Section titled “ DeleteSuiteAsync_also_deletes_its_cases_and_runs()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 69)]public Task DeleteSuiteAsync_also_deletes_its_cases_and_runs()Returns
Section titled “Returns”DiffRunsAsync_counts_a_case_recorded_twice_once()
Section titled “ DiffRunsAsync_counts_a_case_recorded_twice_once()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 473)]public Task DiffRunsAsync_counts_a_case_recorded_twice_once()Returns
Section titled “Returns”DiffRunsAsync_observes_cancellation()
Section titled “ DiffRunsAsync_observes_cancellation()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 572)]public Task DiffRunsAsync_observes_cancellation()Returns
Section titled “Returns”DiffRunsAsync_refuses_an_unfinished_run()
Section titled “ DiffRunsAsync_refuses_an_unfinished_run()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 533)]public Task DiffRunsAsync_refuses_an_unfinished_run()Returns
Section titled “Returns”DiffRunsAsync_refuses_two_runs_of_different_suites()
Section titled “ DiffRunsAsync_refuses_two_runs_of_different_suites()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 551)]public Task DiffRunsAsync_refuses_two_runs_of_different_suites()Returns
Section titled “Returns”DiffRunsAsync_returns_null_for_an_unknown_run()
Section titled “ DiffRunsAsync_returns_null_for_an_unknown_run()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 519)]public Task DiffRunsAsync_returns_null_for_an_unknown_run()Returns
Section titled “Returns”DiffRunsAsync_returns_null_for_another_tenants_run()
Section titled “ DiffRunsAsync_returns_null_for_another_tenants_run()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 494)]public Task DiffRunsAsync_returns_null_for_another_tenants_run()Returns
Section titled “Returns”DiffRunsAsync_separates_the_six_buckets()
Section titled “ DiffRunsAsync_separates_the_six_buckets()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 362)]public Task DiffRunsAsync_separates_the_six_buckets()Returns
Section titled “Returns”DiffRunsAsync_throws_when_retention_removed_only_SOME_of_the_results()
Section titled “ DiffRunsAsync_throws_when_retention_removed_only_SOME_of_the_results()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 451)]public Task DiffRunsAsync_throws_when_retention_removed_only_SOME_of_the_results()Returns
Section titled “Returns”DiffRunsAsync_throws_when_the_baseline_details_were_removed_by_retention()
Section titled “ DiffRunsAsync_throws_when_the_baseline_details_were_removed_by_retention()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 412)]public Task DiffRunsAsync_throws_when_the_baseline_details_were_removed_by_retention()Returns
Section titled “Returns”DiffRunsAsync_throws_when_the_candidate_details_were_removed_by_retention()
Section titled “ DiffRunsAsync_throws_when_the_candidate_details_were_removed_by_retention()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 433)]public Task DiffRunsAsync_throws_when_the_candidate_details_were_removed_by_retention()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.
GetSuiteAsync_returns_null_for_another_tenant()
Section titled “ GetSuiteAsync_returns_null_for_another_tenant()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 49)]public Task GetSuiteAsync_returns_null_for_another_tenant()Returns
Section titled “Returns”ListSuitesAsync_returns_only_that_tenant()
Section titled “ ListSuitesAsync_returns_only_that_tenant()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 57)]public Task ListSuitesAsync_returns_only_that_tenant()Returns
Section titled “Returns”QueryRunsAsync_filters_by_suite_and_puts_the_newest_first()
Section titled “ QueryRunsAsync_filters_by_suite_and_puts_the_newest_first()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 288)]public Task QueryRunsAsync_filters_by_suite_and_puts_the_newest_first()Returns
Section titled “Returns”ReplaceCasesAsync_assigns_sequence_numbers_and_replaces_previous_cases()
Section titled “ ReplaceCasesAsync_assigns_sequence_numbers_and_replaces_previous_cases()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 82)]public Task ReplaceCasesAsync_assigns_sequence_numbers_and_replaces_previous_cases()Returns
Section titled “Returns”ReplaceCasesAsync_leaves_parameters_null_for_a_case_that_declares_none()
Section titled “ ReplaceCasesAsync_leaves_parameters_null_for_a_case_that_declares_none()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 148)]public Task ReplaceCasesAsync_leaves_parameters_null_for_a_case_that_declares_none()Returns
Section titled “Returns”ReplaceCasesAsync_stores_expected_tools_and_context()
Section titled “ ReplaceCasesAsync_stores_expected_tools_and_context()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 102)]public Task ReplaceCasesAsync_stores_expected_tools_and_context()Returns
Section titled “Returns”ReplaceCasesAsync_stores_parameter_values_for_a_parameterized_agent()
Section titled “ ReplaceCasesAsync_stores_parameter_values_for_a_parameterized_agent()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 122)]public Task ReplaceCasesAsync_stores_parameter_values_for_a_parameterized_agent()Returns
Section titled “Returns”Run_lifecycle_transitions_from_running_to_completed()
Section titled “ Run_lifecycle_transitions_from_running_to_completed()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 249)]public Task Run_lifecycle_transitions_from_running_to_completed()Returns
Section titled “Returns”Run_reads_do_not_leak_across_tenants()
Section titled “ Run_reads_do_not_leak_across_tenants()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 334)]public Task Run_reads_do_not_leak_across_tenants()Returns
Section titled “Returns”SaveSuiteAsync_assigns_an_id_to_a_new_suite()
Section titled “ SaveSuiteAsync_assigns_an_id_to_a_new_suite()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 27)]public Task SaveSuiteAsync_assigns_an_id_to_a_new_suite()Returns
Section titled “Returns”SaveSuiteAsync_keeps_the_id_for_the_same_name_and_updates()
Section titled “ SaveSuiteAsync_keeps_the_id_for_the_same_name_and_updates()”[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 37)]public Task SaveSuiteAsync_keeps_the_id_for_the_same_name_and_updates()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.