PHP Classes

File: tests/test_reminder_tracking.php

Recommend this page to a friend!
  Packages of Matthew Asham   Binkterm PHP   tests/test_reminder_tracking.php   Download  
File: tests/test_reminder_tracking.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Binkterm PHP
Bulletin board system based on the Web
Author: By
Last change:
Date: 5 days ago
Size: 4,363 bytes
 

Contents

Class file image Download
<?php
// Test script to verify reminder tracking functionality
// This script demonstrates the new reminder tracking features

require_once __DIR__ . '/../src/Database.php';
require_once
__DIR__ . '/../src/AdminController.php';
require_once
__DIR__ . '/../src/MessageHandler.php';

use
BinktermPHP\Database;
use
BinktermPHP\AdminController;
use
BinktermPHP\MessageHandler;

echo
"=== Reminder Tracking Test Script ===\n\n";

try {
   
// Initialize database connection
   
$db = Database::getInstance()->getPdo();
   
   
// Check if last_reminded column exists
   
echo "1. Checking if last_reminded column exists...\n";
   
$stmt = $db->prepare("
        SELECT column_name
        FROM information_schema.columns
        WHERE table_name = 'users' AND column_name = 'last_reminded'
    "
);
   
$stmt->execute();
   
$columnExists = $stmt->fetch();
   
    if (
$columnExists) {
        echo
" ? last_reminded column exists in users table\n";
    } else {
        echo
" ? last_reminded column NOT found - migration needs to be run\n";
        echo
" Run: psql -d your_database -f database/migrations/v1.4.8_add_last_reminded_field.sql\n";
    }
   
   
// Test AdminController getAllUsers method includes last_reminded
   
echo "\n2. Testing AdminController getAllUsers method...\n";
   
$adminController = new AdminController();
   
$result = $adminController->getAllUsers(1, 5, '');
   
    if (!empty(
$result['users'])) {
       
$firstUser = $result['users'][0];
        if (isset(
$firstUser['days_since_reminder'])) {
            echo
" ? days_since_reminder field is included in user data\n";
            echo
" Sample user reminder status: ";
            if (
$firstUser['days_since_reminder'] === null) {
                echo
"Never reminded\n";
            } else {
                echo
$firstUser['days_since_reminder'] . " days ago\n";
            }
        } else {
            echo
" ? days_since_reminder field missing from user data\n";
        }
       
        if (
array_key_exists('last_reminded', $firstUser)) {
            echo
" ? last_reminded field is included in query results\n";
        } else {
            echo
" ? last_reminded field missing from query results\n";
        }
    } else {
        echo
" ! No users found in database to test\n";
    }
   
   
// Test MessageHandler reminder functionality
   
echo "\n3. Testing MessageHandler reminder functionality...\n";
   
$messageHandler = new MessageHandler();
   
   
// Check if sendAccountReminder method exists and has been updated
   
$reflection = new ReflectionClass($messageHandler);
    if (
$reflection->hasMethod('sendAccountReminder')) {
        echo
" ? sendAccountReminder method exists\n";
       
       
// Read the method source to verify it includes last_reminded update
       
$method = $reflection->getMethod('sendAccountReminder');
       
$filename = $method->getFileName();
       
$startLine = $method->getStartLine();
       
$endLine = $method->getEndLine();
       
$source = implode('', array_slice(file($filename), $startLine - 1, $endLine - $startLine + 1));
       
        if (
strpos($source, 'last_reminded') !== false) {
            echo
" ? sendAccountReminder method includes last_reminded timestamp update\n";
        } else {
            echo
" ? sendAccountReminder method does NOT update last_reminded timestamp\n";
        }
    } else {
        echo
" ? sendAccountReminder method not found\n";
    }
   
    echo
"\n=== Test Summary ===\n";
    echo
"Migration file created: database/migrations/v1.4.8_add_last_reminded_field.sql\n";
    echo
"AdminController updated: ? Includes last_reminded in queries and calculates days\n";
    echo
"MessageHandler updated: ? Updates last_reminded timestamp on successful reminder\n";
    echo
"Admin template updated: ? Displays 'Last Reminded' column in user list\n";
    echo
"\nTo complete setup:\n";
    echo
"1. Run the migration: psql -d your_database -f database/migrations/v1.4.8_add_last_reminded_field.sql\n";
    echo
"2. Test the reminder functionality through the admin interface\n";
    echo
"3. Verify that 'days ago' values appear in the user list after sending reminders\n\n";
   
} catch (
Exception $e) {
    echo
"Error: " . $e->getMessage() . "\n";
    echo
"Stack trace:\n" . $e->getTraceAsString() . "\n";
}