fix: explain IVA query conditions and distinguish integration failures
This commit is contained in:
@@ -76,6 +76,33 @@ class SimulationPublishedFiscalTest extends TestCase
|
||||
return Simulation::with('reports')->findOrFail($id);
|
||||
}
|
||||
|
||||
public function test_iva_query_diagnostics_explain_the_reported_contract_gap_without_calculating_or_changing_answers(): void
|
||||
{
|
||||
$count = Simulation::count();
|
||||
$input = ['component' => 'IVA', 'period_start' => '2026-01-01', 'period_end' => '2026-12-31',
|
||||
'context' => ['fiscal_operation' => 'domestic', 'currency' => 'USD']];
|
||||
$this->actingAs($this->consumer)->postJson('/api/v1/tax-parameters/resolve', $input)->assertOk()
|
||||
->assertJsonPath('assumptions.currency', 'USD')
|
||||
->assertJsonPath('parameters.0.status', 'indeterminate_context')
|
||||
->assertJsonPath('diagnostics.0.label', 'IVA — taxa geral')
|
||||
->assertJsonPath('diagnostics.0.rule_version', 1)
|
||||
->assertJsonPath('diagnostics.0.issues.1.category', 'system_configuration')
|
||||
->assertJsonPath('diagnostics.0.issues.1.received', 'domestic')
|
||||
->assertJsonPath('diagnostics.0.issues.0.category', 'out_of_scope')
|
||||
->assertJsonPath('diagnostics.0.issues.0.received', 'USD')
|
||||
->assertJsonPath('diagnostics.0.issues.0.expected', 'MZN');
|
||||
unset($input['context']['currency']);
|
||||
$this->postJson('/api/v1/tax-parameters/resolve', $input)->assertOk()
|
||||
->assertJsonPath('diagnostics.0.issues.0.category', 'missing_field');
|
||||
$input['context']['currency'] = 'MZN';
|
||||
$input['period_start'] = '2022-01-01';
|
||||
$input['period_end'] = '2022-12-31';
|
||||
$this->postJson('/api/v1/tax-parameters/resolve', $input)->assertOk()
|
||||
->assertJsonPath('parameters', [])
|
||||
->assertJsonPath('diagnostics.0.issues.0.category', 'period_unavailable');
|
||||
self::assertSame($count, Simulation::count());
|
||||
}
|
||||
|
||||
public function test_normal_simulator_admits_published_rule_and_reuses_history_and_reports(): void
|
||||
{
|
||||
$key = (string) Str::uuid();
|
||||
|
||||
Reference in New Issue
Block a user