תכנית בדיקות לבוט – Composition Root (Container) לשירות Snippet
מסמך זה מתאר בדיקות ידניות מהירות לבוט לאחר העברת יצירת התלויות ל־Container דומייני/אפליקטיבי. המטרה: לוודא שה־handlers צורכים את השירות מאותה נקודת אמת, בלי לשנות לוגיקה.
איך לבדוק
מטרה: שמירה עובדת, השפה מזוהה נכון, ותצוגה/עריכה ממשיכות כרגיל.
מה לחפש:
ההודעה אחרי שמירה מציגה שפה נכונה.
תצוגת קוד (Preview) צובעת נכון.
עריכה לא שוברת את השפה השמורה.
לא מופיעות שגיאות ב־logs על יבוא/הקמה של השירות.
סט דוגמאות לשמירה (Copy/Paste)
Bash – קובץ ללא סיומת (
run)
#!/usr/bin/env bash
python main.py
שם קובץ:
runצפוי: שפה
bash
Bash משודרג –
start
#!/usr/bin/env bash
set -e
echo "🚀 Starting bot..."
python main.py
שם קובץ:
startצפוי: שפה
bash
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
סביבה –
.env
# === Bot Configuration ===
BOT_TOKEN=
OWNER_CHAT_ID=
שם קובץ:
.envצפוי: שפה
env
Markdown רגיל –
doc.md
# כותרת
- רשימה
- עוד פריט
קישור: [דוגמה](https://example.com)
שם קובץ:
doc.mdצפוי: שפה
markdown
Python בתוך
.md–Block.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.