prepare( 'INSERT INTO program_session (sessionID, name, description, sessionNumber, orderIndex, isActive, createdAt, updatedAt) VALUES (:id, :name, "", 1, 0, 1, :t, :t)' )->execute([':id' => $sessionID, ':name' => 'S1', ':t' => $now]); qdb_sync_program_session_questionnaires($pdo, $sessionID, [ ['questionnaireID' => 'qn-test', 'orderIndex' => 0], ]); qdb_save($tmpDb, $lockFp); } public function testAdvanceCycleWhenSessionComplete(): void { [$pdo, $tmpDb, $lockFp] = qdb_open(true); require_once dirname(__DIR__, 2) . '/lib/program_sessions.php'; qdb_program_session_settings_save($pdo, ['autoRepeatSessions' => true]); $now = time(); $pdo->prepare( "INSERT INTO completed_questionnaire (clientCode, questionnaireID, status, completedAt, sumPoints) VALUES ('CLIENT-TEST-001', 'qn-test', 'completed', :t, 0)" )->execute([':t' => $now]); $this->assertTrue(qdb_maybe_advance_program_cycle($pdo, 'CLIENT-TEST-001')); $cycle = qdb_client_program_cycle_get($pdo, 'CLIENT-TEST-001'); $this->assertSame(2, $cycle['cycleNumber']); qdb_save($tmpDb, $lockFp); } }