תכנית בדיקות לבוט – Composition Root (Container) לשירות Snippet

מסמך זה מתאר בדיקות ידניות מהירות לבוט לאחר העברת יצירת התלויות ל־Container דומייני/אפליקטיבי. המטרה: לוודא שה־handlers צורכים את השירות מאותה נקודת אמת, בלי לשנות לוגיקה.

איך לבדוק

  • מטרה: שמירה עובדת, השפה מזוהה נכון, ותצוגה/עריכה ממשיכות כרגיל.

  • מה לחפש:

    • ההודעה אחרי שמירה מציגה שפה נכונה.

    • תצוגת קוד (Preview) צובעת נכון.

    • עריכה לא שוברת את השפה השמורה.

    • לא מופיעות שגיאות ב־logs על יבוא/הקמה של השירות.

סט דוגמאות לשמירה (Copy/Paste)

  1. Bash – קובץ ללא סיומת (run)

#!/usr/bin/env bash
python main.py
  • שם קובץ: run

  • צפוי: שפה bash

  1. Bash משודרג – start

#!/usr/bin/env bash
set -e
echo "🚀 Starting bot..."
python main.py
  • שם קובץ: start

  • צפוי: שפה bash

  1. Taskfile – YAML ללא סיומת

version: '3'
tasks:
  run:
    desc: Run the bot
    cmds:
      - python main.py
  install:
    desc: Install dependencies
    cmds:
      - pip install -r requirements.txt
  • שם קובץ: Taskfile

  • צפוי: שפה yaml

  1. סביבה – .env

# === Bot Configuration ===
BOT_TOKEN=
OWNER_CHAT_ID=
  • שם קובץ: .env

  • צפוי: שפה env

  1. Markdown רגיל – doc.md

# כותרת

- רשימה
- עוד פריט

קישור: [דוגמה](https://example.com)
  • שם קובץ: doc.md

  • צפוי: שפה markdown

  1. Python בתוך .mdBlock.md (תוכן פייתון מובהק)

import os, asyncio

def main():
    print("hi")
  • שם קובץ: Block.md

  • צפוי: שפה python (אם אין סימני Markdown חזקים)

בדיקות נוספות

  • הצג קוד אחרי שמירה → וודא שה־preview צבוע לפי השפה.

  • ערוך את אותו קובץ → שמירה חוזרת מציגה שפה עקבית.

  • קבצים מיוחדים: Dockerfile, Makefile, .gitignore, .dockerignore → שפה תואמת שם הקובץ.

תקלות שכדאי לעקוב אחריהן

  • הבוט מציג text במקום שפה צפויה (בדוק shebang/שם/תוכן).

  • חריגות Import על src.infrastructure.composition.

  • זיהוי .md כפייתון למרות Markdown בולט (כותרות/רשימות/גדרות קוד).


בדיקות זרימה מורחבות (לאחר מעבר ל-Facade/Container)

1) שמירה/תצוגה/עריכה (קבצים רגילים)

  • שמור doc.md (Markdown רגיל) ו־Taskfile/.env (YAML/ENV) → הודעת הצלחה + שפה נכונה.

  • תצוגת קוד: כפתורי “✏️ ערוך קוד”, “📝 ערוך שם/הערה”, “📚 היסטוריה”, “📥 הורד”, “🔗 שתף” עובדים.

  • עריכת שם: שנה שם (למשל Taskfile.v2) → “👁️ הצג קוד/📚 היסטוריה” פועלים; מזהה (fid) מתעדכן אם קיים.

  • עריכת הערה: הוסף “בדיקה ידנית” → מוצג ב־View; ערוך שוב ל”מחק” → ההערה מוסרת.

  • מועדפים: הכפתור מחליף תווית (“⭐/💔”) ונשמר מצב.

  • מחיקה: “🗑️ מחק” → “כן, העבר לסל מיחזור” → חזרה לרשימה.

2) קבצים גדולים

  • שמור תוכן גדול (1000+ שורות) בשם big.log.

  • עריכה מהזרימה של “קבצים גדולים” → זיהוי שפה דרך code_service ושמירה דרך Facade; הודעת הצלחה + “📚 חזרה לקבצים גדולים”.

3) מסמכים/העלאות

  • העלה קובץ טקסט קטן → מתקבל fid; “הורד/ערוך/היסטוריה/שתף” עובדים.

  • העלה ZIP → נשמר ב־backups; אם הפעלה רלוונטית, ניתן ליצור ריפו חדש ולשמור selected_repo.

4) Google Drive

  • /drive → תפריט נפתח; בצע התחברות (Device Code) או בדיקת polling ידנית.

  • בחירת ZIP בלבד: “drive_sel_zip” → “אישור” מעלה רק ZIPים שמורים; נשמר last_selected_category.

  • בחירת הכל: “drive_sel_all” → “אישור” מעלה הכל; “drive_status” מציג סטטוס.

  • Advanced: by_repo/large/other → עבור קטגוריה ללא פריטים מתקבלת הודעת “אין פריטים”; כאשר יש, ההעלאה מצליחה.

  • Scheduling: קבע daily/weekly → “next run” מתעדכן; אחרי ריצה (אוטומטית/ידנית) “last_backup_at/next” מתעדכנים; ניתן לבטל (off).

  • Logout: “drive_logout_do” מנקה טוקנים ומציג הודעת ניתוק.

5) ChatOps – זיהוי שפה (שקיפות ודיבוג)

  • /lang run עם reply:

#!/usr/bin/env bash
python main.py

צפוי: bash; reason: shebang.

  • /lang Block.md עם reply:

import os, asyncio
def main(): pass

צפוי: python; reason: override ל-.md.

  • /lang_debug באותו קלט → מוצגים shebang/ext/אותות Python וסימני Markdown.

6) רגרסיה כללית

  • “📚 היסטוריה” → “👁 הצג גרסה” עובד; “↩️ שחזר לגרסה” מחזיר הודעת הצלחה (כאשר זמין).

  • “📥 הורד” → מתקבל קובץ בשם תקין.

  • “🔄 שכפול” → נוצר שם “(copy)”/“(copy n)”; הודעת הצלחה עם כפתורי View/History/Download.