11# SPDX-FileCopyrightText: 2026 Helio Chissini de Castro <heliocastro@gmail.com>
22# SPDX-License-Identifier: MIT
33
4+ from datetime import datetime , timezone
5+
46import pytest
57from pydantic import ValidationError
68
79from ort .models .advisor_capability import AdvisorCapability
10+ from ort .models .advisor_details import AdvisorDetails
811from ort .models .advisor_result import AdvisorResult
912from ort .models .advisor_summary import AdvisorSummary
1013from tests .utils .load_yaml_config import load_yaml_config
@@ -69,14 +72,14 @@ def test_advisor_result_with_defects_from_yaml():
6972def test_advisor_result_minimal ():
7073 """Test creating a minimal AdvisorResult programmatically."""
7174 result = AdvisorResult (
72- advisor = {
73- " name" : "TestAdvisor" ,
74- " capabilities" : [ " VULNERABILITIES" ] ,
75- } ,
76- summary = {
77- " start_time" : " 2024-01-01T00:00:00Z" ,
78- " end_time" : " 2024-01-01T00:01:00Z" ,
79- } ,
75+ advisor = AdvisorDetails (
76+ name = "TestAdvisor" ,
77+ capabilities = { AdvisorCapability . VULNERABILITIES } ,
78+ ) ,
79+ summary = AdvisorSummary (
80+ start_time = datetime ( 2024 , 1 , 1 , 0 , 0 , 0 , tzinfo = timezone . utc ) ,
81+ end_time = datetime ( 2024 , 1 , 1 , 0 , 1 , 0 , tzinfo = timezone . utc ) ,
82+ ) ,
8083 )
8184 if result .advisor .name != "TestAdvisor" :
8285 pytest .fail (f"Expected advisor name 'TestAdvisor', got '{ result .advisor .name } '" )
@@ -90,29 +93,29 @@ def test_advisor_result_missing_advisor():
9093 """Test that missing advisor field raises ValidationError."""
9194 with pytest .raises (ValidationError ):
9295 AdvisorResult (
93- summary = {
94- " start_time" : " 2024-01-01T00:00:00Z" ,
95- " end_time" : " 2024-01-01T00:01:00Z" ,
96- } ,
97- )
96+ summary = AdvisorSummary (
97+ start_time = datetime ( 2024 , 1 , 1 , 0 , 0 , 0 , tzinfo = timezone . utc ) ,
98+ end_time = datetime ( 2024 , 1 , 1 , 0 , 1 , 0 , tzinfo = timezone . utc ) ,
99+ ) ,
100+ ) # ty: ignore[missing-argument]
98101
99102
100103def test_advisor_result_missing_summary ():
101104 """Test that missing summary field raises ValidationError."""
102105 with pytest .raises (ValidationError ):
103106 AdvisorResult (
104- advisor = {
105- " name" : "TestAdvisor" ,
106- " capabilities" : [ " VULNERABILITIES" ] ,
107- } ,
108- )
107+ advisor = AdvisorDetails (
108+ name = "TestAdvisor" ,
109+ capabilities = { AdvisorCapability . VULNERABILITIES } ,
110+ ) ,
111+ ) # ty: ignore[missing-argument]
109112
110113
111114def test_advisor_summary_timestamps ():
112115 """Test AdvisorSummary timestamp parsing."""
113116 summary = AdvisorSummary (
114- start_time = " 2024-06-01T10:00:00Z" ,
115- end_time = " 2024-06-01T10:05:00Z" ,
117+ start_time = datetime ( 2024 , 6 , 1 , 10 , 0 , 0 , tzinfo = timezone . utc ) ,
118+ end_time = datetime ( 2024 , 6 , 1 , 10 , 5 , 0 , tzinfo = timezone . utc ) ,
116119 )
117120 if summary .start_time .year != 2024 :
118121 pytest .fail (f"Expected year 2024, got { summary .start_time .year } " )
0 commit comments