@@ -218,3 +218,91 @@ INSERT INTO network_state (key, value) VALUES
218218 ('challenge_id', '')
219219ON CONFLICT (key) DO NOTHING;
220220"# ;
221+
222+ #[ cfg( test) ]
223+ mod tests {
224+ use super :: * ;
225+
226+ #[ test]
227+ fn test_schema_sql_contains_tables ( ) {
228+ // Verify that the schema SQL contains all expected table definitions
229+ assert ! ( SCHEMA_SQL . contains( "CREATE TABLE IF NOT EXISTS validators" ) ) ;
230+ assert ! ( SCHEMA_SQL . contains( "CREATE TABLE IF NOT EXISTS challenge_config" ) ) ;
231+ assert ! ( SCHEMA_SQL . contains( "CREATE TABLE IF NOT EXISTS submissions" ) ) ;
232+ assert ! ( SCHEMA_SQL . contains( "CREATE TABLE IF NOT EXISTS evaluations" ) ) ;
233+ assert ! ( SCHEMA_SQL . contains( "CREATE TABLE IF NOT EXISTS leaderboard" ) ) ;
234+ assert ! ( SCHEMA_SQL . contains( "CREATE TABLE IF NOT EXISTS task_leases" ) ) ;
235+ assert ! ( SCHEMA_SQL . contains( "CREATE TABLE IF NOT EXISTS events" ) ) ;
236+ assert ! ( SCHEMA_SQL . contains( "CREATE TABLE IF NOT EXISTS network_state" ) ) ;
237+ assert ! ( SCHEMA_SQL . contains( "CREATE TABLE IF NOT EXISTS challenges" ) ) ;
238+ assert ! ( SCHEMA_SQL . contains( "CREATE TABLE IF NOT EXISTS evaluation_jobs" ) ) ;
239+ }
240+
241+ #[ test]
242+ fn test_schema_sql_contains_indexes ( ) {
243+ // Verify that the schema SQL contains index definitions
244+ assert ! ( SCHEMA_SQL . contains( "CREATE INDEX IF NOT EXISTS idx_submissions_miner" ) ) ;
245+ assert ! ( SCHEMA_SQL . contains( "CREATE INDEX IF NOT EXISTS idx_submissions_epoch" ) ) ;
246+ assert ! ( SCHEMA_SQL . contains( "CREATE INDEX IF NOT EXISTS idx_evaluations_agent" ) ) ;
247+ assert ! ( SCHEMA_SQL . contains( "CREATE INDEX IF NOT EXISTS idx_leaderboard_rank" ) ) ;
248+ assert ! ( SCHEMA_SQL . contains( "CREATE INDEX IF NOT EXISTS idx_task_leases_validator" ) ) ;
249+ assert ! ( SCHEMA_SQL . contains( "CREATE INDEX IF NOT EXISTS idx_events_type" ) ) ;
250+ assert ! ( SCHEMA_SQL . contains( "CREATE INDEX IF NOT EXISTS idx_challenges_status" ) ) ;
251+ assert ! ( SCHEMA_SQL . contains( "CREATE INDEX IF NOT EXISTS idx_jobs_status" ) ) ;
252+ }
253+
254+ #[ test]
255+ fn test_schema_sql_contains_initial_data ( ) {
256+ // Verify initial network state data
257+ assert ! ( SCHEMA_SQL . contains( "INSERT INTO network_state" ) ) ;
258+ assert ! ( SCHEMA_SQL . contains( "current_epoch" ) ) ;
259+ assert ! ( SCHEMA_SQL . contains( "current_block" ) ) ;
260+ assert ! ( SCHEMA_SQL . contains( "total_stake" ) ) ;
261+ assert ! ( SCHEMA_SQL . contains( "challenge_id" ) ) ;
262+ }
263+
264+ #[ test]
265+ fn test_schema_sql_contains_foreign_keys ( ) {
266+ // Verify foreign key relationships
267+ assert ! ( SCHEMA_SQL . contains( "REFERENCES submissions(id)" ) ) ;
268+ }
269+
270+ #[ test]
271+ fn test_schema_sql_contains_unique_constraints ( ) {
272+ // Verify unique constraints
273+ assert ! ( SCHEMA_SQL . contains( "UNIQUE(submission_id, validator_hotkey)" ) ) ;
274+ assert ! ( SCHEMA_SQL . contains( "agent_hash VARCHAR(128) NOT NULL UNIQUE" ) ) ;
275+ }
276+
277+ #[ test]
278+ fn test_schema_sql_default_values ( ) {
279+ // Verify default values are set correctly with specific column checks
280+ assert ! ( SCHEMA_SQL . contains( "status VARCHAR(32) DEFAULT 'pending'" ) ) ;
281+ assert ! ( SCHEMA_SQL . contains( "status VARCHAR(32) DEFAULT 'active'" ) ) ;
282+ assert ! ( SCHEMA_SQL . contains( "is_active BOOLEAN DEFAULT TRUE" ) ) ;
283+ assert ! ( SCHEMA_SQL . contains( "stake BIGINT NOT NULL DEFAULT 0" ) ) ;
284+ assert ! ( SCHEMA_SQL . contains( "gpu_required BOOLEAN DEFAULT FALSE" ) ) ;
285+ assert ! ( SCHEMA_SQL . contains( "is_healthy BOOLEAN DEFAULT FALSE" ) ) ;
286+ assert ! ( SCHEMA_SQL . contains( "DEFAULT NOW()" ) ) ;
287+ }
288+
289+ #[ test]
290+ fn test_schema_sql_jsonb_fields ( ) {
291+ // Verify JSONB columns exist for flexible data
292+ assert ! ( SCHEMA_SQL . contains( "module_whitelist JSONB" ) ) ;
293+ assert ! ( SCHEMA_SQL . contains( "model_whitelist JSONB" ) ) ;
294+ assert ! ( SCHEMA_SQL . contains( "pricing_config JSONB" ) ) ;
295+ assert ! ( SCHEMA_SQL . contains( "evaluation_config JSONB" ) ) ;
296+ assert ! ( SCHEMA_SQL . contains( "task_results JSONB" ) ) ;
297+ assert ! ( SCHEMA_SQL . contains( "payload JSONB" ) ) ;
298+ }
299+
300+ #[ test]
301+ fn test_schema_sql_timestamp_fields ( ) {
302+ // Verify timestamp fields are properly defined
303+ assert ! ( SCHEMA_SQL . contains( "created_at TIMESTAMPTZ" ) ) ;
304+ assert ! ( SCHEMA_SQL . contains( "updated_at TIMESTAMPTZ" ) ) ;
305+ assert ! ( SCHEMA_SQL . contains( "expires_at TIMESTAMPTZ" ) ) ;
306+ assert ! ( SCHEMA_SQL . contains( "last_seen TIMESTAMPTZ" ) ) ;
307+ }
308+ }
0 commit comments