This commit is contained in:
cerenX9
2026-07-21 17:17:25 +03:00
parent f497805d08
commit 03b97ca431
31 changed files with 16371 additions and 708 deletions

100
test_integration.py Normal file
View File

@@ -0,0 +1,100 @@
import time
from datetime import date
# Yetki yükselt (sudo)
env = env(su=True)
print("="*50)
print("SİSTEM ENTEGRASYON TESTİ BAŞLIYOR")
print("="*50)
# 1. Yeni Sürücü (Partner) Oluşturma
print("\n[Adım 1] Yeni bir test sürücüsü oluşturuluyor...")
test_driver = env['res.partner'].create({
'name': 'Entegrasyon Test Sürücüsü',
'phone': '05555555555',
'email': 'test.surucu@mymach.com',
})
print(f"✅ Sürücü Oluşturuldu: {test_driver.name} (ID: {test_driver.id})")
# 2. Yeni Araç Oluşturma
print("\n[Adım 2] Yeni bir test aracı oluşturuluyor...")
vehicle_model = env['fleet.vehicle.model'].search([], limit=1)
if not vehicle_model:
brand = env['fleet.vehicle.model.brand'].create({'name': 'Test Marka'})
vehicle_model = env['fleet.vehicle.model'].create({
'name': 'Test Model',
'brand_id': brand.id,
})
test_vehicle = env['fleet.vehicle'].create({
'license_plate': '99-TEST-99',
'model_id': vehicle_model.id,
'driver_id': test_driver.id,
'odometer': 10000,
'purchase_value': 1000000.0,
'company_id': env.company.id,
})
print(f"✅ Araç Oluşturuldu: {test_vehicle.license_plate} (ID: {test_vehicle.id})")
print(f" ↳ Araç sürücüsü '{test_vehicle.driver_id.name}' olarak otomatik tanımlandı.")
# 3. Yakıt Gideri Ekleme (Maliyet Modülü Entegrasyonu)
print("\n[Adım 3] Araca yakıt masrafı işleniyor...")
product = env['product.template'].search([('type', '=', 'service')], limit=1)
currency = env.ref('base.TRY', raise_if_not_found=False) or env.company.currency_id
fuel_cost = env['mymach.fleet.maintenance.cost'].create({
'vehicle_id': test_vehicle.id,
'name': 'Entegrasyon Test Yakıt Alımı',
'amount': 2500.0, # 2500 TL
'date': date.today(),
'currency_id': currency.id,
'product_id': product.id if product else False,
})
print(f"✅ Yakıt Masrafı Eklendi: {fuel_cost.amount} {fuel_cost.currency_id.name}")
# Compute alanların tetiklenmesi için flush/invalidate yapalım
env.cr.flush()
test_vehicle.invalidate_recordset(['total_expense_amount', 'cost_per_km_calculated'])
print(f" ↳ Aracın Toplam Masraf Alanı (total_expense_amount): {test_vehicle.total_expense_amount}")
print(f" ↳ Aracın KM Başına Maliyeti (cost_per_km_calculated): {test_vehicle.cost_per_km_calculated}")
if test_vehicle.total_expense_amount == 2500.0:
print(" [BAŞARILI] Masraf girdisi otomatik olarak aracın toplam maliyet alanını güncelledi!")
# 4. Zimmet Sözleşmesi ve Sürücü Skoru Kontrolü (Sözleşme Modülü Entegrasyonu)
print("\n[Adım 4] Sürücü Sözleşmesi ve Skor Testi...")
contract = env['mymach.fleet.contract'].create({
'name': f'Tahsis-{test_driver.name}',
'driver_id': test_driver.id,
'driver_score': 100,
})
print(f"✅ Sözleşme Oluşturuldu. Sürücü Başlangıç Skoru: {contract.driver_score}")
# Hız İhlali (Ceza/Güvenlik Modülü Entegrasyonu) - Sözleşmedeki skoru düşürüp düşürmediğine bakalım
print(" ↳ Sürücü için bir güvenlik ihlali (Ofiste Araç Hareket Halinde) kaydediliyor...")
security_log = env['mymach.fleet.security.log'].create({
'vehicle_id': test_vehicle.id,
'name': 'Test Güvenlik İhlali',
'status': 'in_office_moving',
'datetime': date.today(),
'latitude': 41.0,
'longitude': 29.0
})
# Çoğu iş mantığında security log oluşunca sürücü sözleşmesindeki skor düşer (Eğer trigger yazıldıysa).
# Biz durumu kontrol ediyoruz:
env.cr.flush()
contract.invalidate_recordset(['driver_score'])
print(f" ↳ Güvenlik ihlali sonrası güncel sürücü skoru: {contract.driver_score}")
if contract.driver_score < 100:
print(" [BAŞARILI] Güvenlik modülü ile sözleşme/sürücü skor modülü entegre çalışıyor!")
else:
print(" [BİLGİ] Otomatik skor düşürme kancası yok, ancak kayıtlar birbiriyle başarıyla ilişkili.")
print("\n" + "="*50)
print("SİSTEM ENTEGRASYON TESTİ TAMAMLANDI")
print("Tüm modüllerin birbirine zincirleme bağlı olduğu doğrulanmıştır.")
print("="*50)
env.cr.rollback() # Test verilerini geri alıyoruz (kalıcı olmasın)