İlk versiyon: MyMach Fleet Intelligence ve yapılandırmalar
This commit is contained in:
102
test_suite.py
Normal file
102
test_suite.py
Normal file
@@ -0,0 +1,102 @@
|
||||
import datetime
|
||||
import urllib.request
|
||||
import json
|
||||
from odoo import fields
|
||||
|
||||
env = env(user=1)
|
||||
print("\n" + "="*50)
|
||||
print("MYMACH AKILLI FILO - KAPSAMLI FOTOĞRAFLI TESLİM & İADE TEST SUİTİ")
|
||||
print("="*50)
|
||||
|
||||
# --- HAZIRLIK ---
|
||||
print("\n[HAZIRLIK] Test Verileri Oluşturuluyor...")
|
||||
partner = env['res.partner'].create({'name': 'TEST_Sürücü_Teslim'})
|
||||
employee = env['hr.employee'].create({'name': 'TEST_Personel_Teslim', 'work_contact_id': partner.id})
|
||||
|
||||
contract = env['mymach.fleet.contract'].create({
|
||||
'name': 'CON-HANDOVER-TEST',
|
||||
'driver_id': partner.id,
|
||||
'personal_use_policy': 'forbidden',
|
||||
'commute_allowed': 'allowed',
|
||||
'driver_score': 100
|
||||
})
|
||||
|
||||
model_id = env['fleet.vehicle.model'].search([], limit=1)
|
||||
vehicle = env['fleet.vehicle'].create({
|
||||
'model_id': model_id.id,
|
||||
'license_plate': '34 TESLIM 26',
|
||||
'driver_id': partner.id,
|
||||
'purchase_value': 50000,
|
||||
'tank_capacity': 60.0,
|
||||
'factory_avg_consumption': 6.0
|
||||
})
|
||||
print(f" -> Sözleşme oluşturuldu: {contract.name}")
|
||||
print(f" -> Araç oluşturuldu: {vehicle.license_plate}")
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# BÖLÜM 1: ARAÇ TESLİM ALIM (GİRİŞ) İŞLEMİ
|
||||
# ---------------------------------------------------------
|
||||
print("\n[TEST 1] ARAÇ TESLİM ALIM (GİRİŞ) YAZILIM TESTİ")
|
||||
# Sahte bir fotoğraf (Binary string)
|
||||
dummy_photo = b"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="
|
||||
|
||||
handover = env['mymach.fleet.handover'].create({
|
||||
'vehicle_id': vehicle.id,
|
||||
'driver_id': partner.id,
|
||||
'start_odometer': 12000.0,
|
||||
'start_fuel_level': 80.0, # %80 depo ile aldı
|
||||
'start_photo': dummy_photo
|
||||
})
|
||||
|
||||
print(f" -> Kayıt Oluşturuldu: {handover.name} (Durum: {handover.state})")
|
||||
handover.action_take()
|
||||
print(f" -> Teslim Alındı Sonrası Durum: {handover.state}")
|
||||
print(f" -> Araç Depo Durumu (Litre): {vehicle.current_fuel_level} L (Kapasite: {vehicle.tank_capacity} L)")
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# BÖLÜM 2: ARAÇ TESLİM ETME (İADE) İŞLEMİ
|
||||
# ---------------------------------------------------------
|
||||
print("\n[TEST 2] ARAÇ İADE VE ODOMETER GÜNCELLEME TESTİ")
|
||||
handover.write({
|
||||
'end_odometer': 12350.0, # 350 KM yol yapmış
|
||||
'end_fuel_level': 45.0, # %45 depo ile iade etti
|
||||
'end_photo': dummy_photo
|
||||
})
|
||||
handover.action_return()
|
||||
print(f" -> İade Edildi Sonrası Durum: {handover.state}")
|
||||
print(f" -> Yapılan Yol (Hesaplanan): {handover.odometer_diff} KM")
|
||||
print(f" -> Yakıt Değişimi: %{handover.fuel_diff}")
|
||||
# En son odometer değerini kontrol edelim
|
||||
last_odometer = env['fleet.vehicle.odometer'].search([('vehicle_id', '=', vehicle.id)], order='value desc', limit=1)
|
||||
print(f" -> Araç Son Kilometresi (Odometer): {last_odometer.value} KM")
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# BÖLÜM 3: YÖNETİCİ DENETİM VE ONAYI
|
||||
# ---------------------------------------------------------
|
||||
print("\n[TEST 3] YÖNETİCİ KIYASLAMA VE ONAYLAMA")
|
||||
handover.write({
|
||||
'manager_note': 'Yakıt farkı makul seviyede, hasarsız teslim alındı.'
|
||||
})
|
||||
handover.action_compare()
|
||||
print(f" -> Denetim Sonrası Durum: {handover.state} (Onaylandı mı?: {handover.is_approved})")
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# BÖLÜM 4: OTONOM FOTOĞRAF PURGE (CRON) TESTİ
|
||||
# ---------------------------------------------------------
|
||||
print("\n[TEST 4] 10 GÜNLÜK FOTOĞRAF OTONOM PURGE CRON TESTİ")
|
||||
# İade tarihini 11 gün öncesine alalım
|
||||
eleven_days_ago = fields.Datetime.now() - datetime.timedelta(days=11)
|
||||
handover.write({'return_datetime': eleven_days_ago})
|
||||
|
||||
print(f" -> İade Tarihi Geriye Alındı: {handover.return_datetime}")
|
||||
print(f" -> Temizlik Öncesi Fotoğraflar Mevcut mu?: (Alış: {bool(handover.start_photo)}, İade: {bool(handover.end_photo)})")
|
||||
|
||||
# Cron fonksiyonunu çalıştır
|
||||
deleted_count = env['mymach.fleet.handover'].action_purge_expired_photos()
|
||||
|
||||
print(f" -> Cron Çalıştırıldı. Temizlenen Kayıt Sayısı: {deleted_count}")
|
||||
print(f" -> Temizlik Sonrası Fotoğraflar Mevcut mu?: (Alış: {bool(handover.start_photo)}, İade: {bool(handover.end_photo)})")
|
||||
|
||||
print("\n" + "="*50)
|
||||
print("FOTOĞRAFLI TESLİM/İADE VE CRON TESTLERİ BAŞARIYLA TAMAMLANDI!")
|
||||
print("="*50 + "\n")
|
||||
Reference in New Issue
Block a user