CP_AUTOMATION/documentation/automation-status/HOW_IT_WORKS_STUDENT_DATA.md
2025-12-12 19:54:54 +05:30

9.5 KiB

🔄 HOW IT WORKS - STUDENT DATA MANAGEMENT

Complete Flow Explanation

Date: 2025-01-20
Purpose: Explain how the system handles multiple students and password updates


📋 HOW IT ACTUALLY WORKS

1. Student Data Loading

When: Automatically on first use, or manually via load_students_from_csv()

What Happens:

1. System looks for CSV files: students_with_passwords_*.csv
2. Finds latest file (by modification time)
3. Loads all students into memory (singleton pattern)
4. Calculates DOB for each student based on age
5. Stores in _students dictionary: {CPID → student_data}

Example:

# Auto-loads on first access
data = student_data_manager.get_student_data('BAR210A010D')
# Returns: {'cpid': 'BAR210A010D', 'age': 16, 'dob': '2009-01-15', ...}

Current CSV: students_with_passwords_2025-12-08T08-04-09.csv

  • Contains 10 students
  • Each has: CPID, Password, Age, Name, Email, etc.

2. Password Management

Password Tracker (utils/password_tracker.py):

  • Purpose: Tracks password state for each student
  • Storage: In-memory dictionary (singleton)
  • Lifetime: Per test session (resets when tests restart)

How It Works:

1. Student logs in with Excel password (from CSV)
2. Password reset modal appears
3. Reset to TEST_NEW_PASSWORD (Admin@123)
4. Password tracker updates: {CPID → TEST_NEW_PASSWORD}
5. Next login uses TEST_NEW_PASSWORD (from tracker)

Example:

# First login
password = password_tracker.get_password('BAR210A010D', 'oajXgRkKLF8#')
# Returns: 'oajXgRkKLF8#' (Excel password)

# After password reset
password_tracker.update_password('BAR210A010D', 'Admin@123')

# Next login
password = password_tracker.get_password('BAR210A010D', 'oajXgRkKLF8#')
# Returns: 'Admin@123' (updated password)

Important:

  • Password tracker is in-memory only (resets on restart)
  • Each test session starts fresh
  • If student already reset password, smart login handles it
  • No permanent storage (no database/file updates)

3. Student Lifecycle

Scenario 1: Fresh Student (First Time)

1. Login with Excel password → Success
2. Password reset modal appears
3. Reset to TEST_NEW_PASSWORD
4. Password tracker updated
5. Profile incomplete modal appears
6. Navigate to profile editor
7. Complete profile with student data (correct DOB)
8. Age verification modal: NOT APPEARED (DOB matches)
9. Profile reaches 100%

Scenario 2: Already Reset Student

1. Login with Excel password → Fails
2. Smart login tries TEST_NEW_PASSWORD → Success
3. Password tracker updated (if not already)
4. Profile incomplete modal (if profile < 100%)
5. Complete profile with student data
6. Age verification modal: NOT APPEARED (DOB matches)

Scenario 3: Profile Already Complete

1. Login with TEST_NEW_PASSWORD → Success
2. No modals appear
3. Profile already at 100%
4. Ready for assessments

4. Multiple Students Handling

Current Setup:

  • CSV contains 10 students
  • Each student processed independently
  • Password tracker maintains state per student
  • Student data manager loads all students once

How Multiple Students Work:

# Student 1: BAR210A010D
login('BAR210A010D')  Reset password  Complete profile
password_tracker: {'BAR210A010D': 'Admin@123'}

# Student 2: BIS212B040F
login('BIS212B040F')  Reset password  Complete profile
password_tracker: {'BAR210A010D': 'Admin@123', 'BIS212B040F': 'Admin@123'}

# Student 3: BAT611A0304
login('BAT611A0304')  Reset password  Complete profile
password_tracker: {'BAR210A010D': 'Admin@123', 'BIS212B040F': 'Admin@123', 'BAT611A0304': 'Admin@123'}

Important:

  • Each student has independent password state
  • Password tracker remembers all students
  • Student data manager has all students loaded
  • Can process all 10 students in sequence

5. When All Students Are Used

What Happens:

  • After all 10 students reset passwords → All use TEST_NEW_PASSWORD
  • Password tracker has all 10 students tracked
  • Can still use them (all passwords are Admin@123)
  • No issue - system continues working

When You Need Fresh Students:

  • When you want to test with different students
  • When you want fresh Excel passwords
  • When you want to test password reset flow again
  • When you create new students in the system

How to Provide New Students:

  1. Create new students in the system
  2. Export to Excel/CSV (same format)
  3. Place CSV in project root: students_with_passwords_YYYY-MM-DDTHH-MM-SS.csv
  4. System auto-detects latest file
  5. All tests use new students automatically

Current Students (10 total):

  1. BAR210A010D - Hridaan Kade (Age: 16)
  2. BIS212B040F - Riaan Rajagopal (Age: 17)
  3. BAT611A0304 - Nayantara Sheth (Age: 14)
  4. DES590B020U - Jivika Shankar (Age: 17)
  5. CHA410A0509 - Anahita Barad (Age: 15)
  6. BIR311C070A - Purab Varghese (Age: 16)
  7. MAH112B080D - Farhan Gole (Age: 16)
  8. DAV990B090B - Kismat Biswas (Age: 18)
  9. CHE411C060W - Indrans Babu (Age: 15)
  10. BUC612A010D - Piya Singh (Age: 16)

🔄 ACTUAL FLOW

Test Execution Flow:

1. Test starts
   ↓
2. Student data manager loads CSV (if not loaded)
   ↓
3. Password tracker initialized (empty)
   ↓
4. Test uses student CPID
   ↓
5. Login with smart password handling:
   - Try Excel password (from CSV)
   - If fails, try TEST_NEW_PASSWORD
   - Update password tracker
   ↓
6. Handle password reset (if modal appears)
   - Get current password from tracker
   - Reset to TEST_NEW_PASSWORD
   - Update password tracker
   ↓
7. Navigate to profile editor
   ↓
8. Complete profile with student data:
   - Get student data from manager
   - Use correct DOB (matches school records)
   - Fill all fields with student data
   - Save after each tab
   - Handle age verification modal (if appears)
   ↓
9. Verify profile reaches 100%
   ↓
10. Test completes

ANSWERS TO YOUR QUESTIONS

Q1: Will it work if all 10 students get used (passwords updated)?

Answer: YES, it will continue working!

Why:

  • Password tracker remembers all students
  • All students will use TEST_NEW_PASSWORD (Admin@123)
  • System continues working normally
  • No issue with reused students

Example:

After processing all 10 students:
password_tracker = {
    'BAR210A010D': 'Admin@123',
    'BIS212B040F': 'Admin@123',
    'BAT611A0304': 'Admin@123',
    ...
    'BUC612A010D': 'Admin@123'
}

All students can still be used - all passwords are Admin@123

Q2: How is it running actually?

Answer: Here's the actual flow:

Step-by-Step:

  1. CSV Loading:

    • System finds latest CSV file
    • Loads all 10 students into memory
    • Calculates DOB for each (Age → DOB)
    • Stores in _students dictionary
  2. Password Management:

    • Each student starts with Excel password (from CSV)
    • First login → Password reset → Update to Admin@123
    • Password tracker remembers: {CPID: 'Admin@123'}
    • Next login uses Admin@123 (from tracker)
  3. Profile Completion:

    • Gets student data from manager
    • Uses correct DOB (prevents age verification modal)
    • Fills profile with student data
    • Saves after each tab
    • Handles age verification modal (if appears)
  4. Multiple Students:

    • Each student processed independently
    • Password tracker maintains state per student
    • Can process all 10 students in sequence
    • All passwords become Admin@123 after reset

Q3: When do you need fresh students?

Answer: You need fresh students when:

  1. Testing Password Reset Flow:

    • Want to test password reset again
    • Need students with Excel passwords (not Admin@123)
  2. Testing Fresh Student Journey:

    • Want to test first-time login flow
    • Need students who haven't reset password
  3. Different Student Data:

    • Want to test with different ages/DOBs
    • Need different student profiles
  4. Exhausted Current Students:

    • All 10 students processed
    • Want fresh batch for testing

How to Provide:

  1. Create new students in system
  2. Export to CSV (same format)
  3. Place in project root
  4. System auto-detects and uses it

🚀 READY TO TEST

Current Status:

  • 10 students loaded from CSV
  • All have correct DOB calculated
  • Password tracker ready
  • Age verification handler ready
  • Profile completion updated

Test Command:

# Test profile completion with student data
pytest tests/student_profile/test_profile_completion_with_student_data.py -v

# Test specific student
pytest tests/student_profile/test_profile_completion_with_student_data.py::TestProfileCompletionWithStudentData::test_profile_completion_with_correct_dob -v

📊 SUMMARY

How It Works:

  1. CSV loaded once → All students in memory
  2. Password tracker → Remembers each student's password
  3. Student data → Provides correct DOB (prevents modal)
  4. Age verification handler → Handles modal if appears
  5. Multiple students → All work independently

When You Need Fresh Students:

  • When you want to test password reset again
  • When you want fresh Excel passwords
  • When you create new students
  • Just provide new CSV → System uses it automatically

Current Students:

  • 10 students available
  • All can be used
  • Passwords will be updated to Admin@123
  • System continues working after all are used

Document Version: 1.0
Created: 2025-01-20
Status: COMPLETE - READY FOR TESTING


🚀 SYSTEM IS READY - LET'S TEST THE COMPLETE FLOW!