21.07v
This commit is contained in:
100
test_integration.py
Normal file
100
test_integration.py
Normal 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)
|
||||
Reference in New Issue
Block a user