§
    ¼ß™jŽ  ã                  óè   — d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
mZ ddlmZ ddlmZ ddlmZ e	j        dd
„¦   «         Ze	j        dd„¦   «         Ze	j        dd„¦   «         Zd„ Zd„ Zdd„Zd„ ZdS )zƒIntegration tests for Equipment Fleet and Fuel Consumption Engine.
Strict Zero-Tolerance Synthetic Data & Decimal(18,4) COMPLIANT.
é    )ÚannotationsN)Ú
TestClient)Ú
create_app)ÚAuthService)ÚEquipmentEfficiencyServiceÚreturnr   c                 ó<   — t          ¦   «         } t          | ¦  «        S )N)r   r   )Úapps    ú6C:\Projects\DSCons\tests\test_fleet_and_fuel_engine.pyÚclientr      s   € å
‰,Œ,€CÝ�c‰?Œ?Ðó    Ústrc                 óT   — t          ¦   «         } |                      ddddddœ¦  «        S )Nzadmin-idzdirector@dscons.vnÚ
superadminu   Nguyá»…n SÄ© SÆ¡nz$0753d827-90e1-4894-9c16-266ca572c5eb)ÚidÚemailÚroleÚ	full_nameÚ
company_id)r   Úcreate_jwt_token)Úauths    r   Ú
auth_tokenr      s<   € å‰=Œ=€DØ× Ò àØ)Ø Ø,Ø@ð	
ð 	
ñô ð r   r   údict[str, str]c                ó   — dd| › �iS )NÚAuthorizationzBearer © )r   s    r   Úauth_headersr   %   s   € àÐ3 zÐ3Ð3Ð4Ð4r   c                 ó  — t          ¦   «         } |                      ¦   «         }d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}|d         }|d	         }d
}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}x}}|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}x}}|d         }
t          |
¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndd t          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nd t          j        |¦  «        t          j        |¦  «        d!œz  }	d"d#|	iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}d$„ |
D ¦   «         }d%}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        d&t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd&dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d'}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        d&t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd&dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d(}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        d&t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd&dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d)}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        d&t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd&dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d*}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        d&t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd&dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d+}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        d&t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd&dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d,}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        d&t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd&dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}dS )-um   Kiá»ƒm tra bÃ¡o cÃ¡o tá»•ng há»£p Ä‘oÃ n xe mÃ¡y vÃ  tiÃªu hao dáº§u DO tá»« nguá»“n hÃ³a Ä‘Æ¡n Cá»¥c Thuáº¿.Úsummary©Úin©z%(py1)s in %(py3)sÚres©Úpy1Úpy3úassert %(py5)sÚpy5NÚtotal_equipmenté(   ©ú>=)z%(py1)s >= %(py4)s©r%   Úpy4úassert %(py6)sÚpy6Útotal_trucksé   Útotal_excavatorsé
   Útotal_fuel_literséPÃ  ©ú>©z%(py1)s > %(py4)sÚtotal_fuel_cost_vndi Êš;Útotal_fills_countéd   Úfleet_equipmenté   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)sÚlenÚfleet)Úpy0r%   r&   r0   zassert %(py8)sÚpy8c                ób   — g | ],}|                      d ¦  «        ¯|                      d ¦  «        ‘Œ-S )Úlicense_plate)Úget)Ú.0Úes     r   ú
<listcomp>z3test_fleet_fuel_summary_service.<locals>.<listcomp>=   s5   € ÐNÐNÐN¨°q·u²u¸_Ñ7MÔ7MÐNˆa�eŠe�OÑ$Ô$ÐNÐNÐNr   z
15H-288.44Úplatesú
34H-048.48z
15H-131.26z
15H-283.52z
15H-105.29z
15H-105.76z
15H-106.24)r   Úget_fleet_fuel_summaryÚ
@pytest_arÚ_call_reprcompareÚ	_safereprÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚAssertionErrorÚ_format_explanationr?   )Úservicer#   Ú@py_assert0Ú@py_assert2Ú@py_format4Ú@py_format6ÚsÚ@py_assert3Ú@py_format5Ú@py_format7r@   Ú@py_assert5Ú@py_assert4Ú@py_format9rI   s                  r   Útest_fleet_fuel_summary_servicer`   *   sv  € å(Ñ*Ô*€GØ
×
(Ò
(Ñ
*Ô
*€CàÐˆ9˜ÐÐÐÐÕÔÐÐÐÐˆ9˜ÐÑÔÕÔˆ9ÑÔÐÕÔÑÔÐÐÕÔ˜ÑÔÐÕÔ˜ÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØˆIŒ€AØÐÔÐ% 2Ð%Ð 2Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð 2Ð%Ñ%Ô%Õ%Ô%ÐÑ%Ô%Õ%Ô% 2Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Øˆ^ÔÐ" Ð"Ð Ò"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð Ð"Ñ"Ô"Õ"Ô"ÐÑ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÐÔ Ð& BÐ&Ð  BÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð  BÐ&Ñ&Ô&Õ&Ô&Ð Ñ&Ô&Õ&Ô& BÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÐ Ô!Ð) EÐ)Ð! EÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð! EÐ)Ñ)Ô)Õ)Ô)Ð!Ñ)Ô)Õ)Ô) EÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÐ"Ô#Ð0 jÐ0Ð# jÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð# jÐ0Ñ0Ô0Õ0Ô0Ð#Ñ0Ô0Õ0Ô0 jÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØÐ Ô!Ð( SÐ(Ð! SÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð! SÐ(Ñ(Ô(Õ(Ô(Ð!Ñ(Ô(Õ(Ô( SÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð Ð!Ô"€EÝˆu‰:Œ:Ð˜Ðˆ:˜ÒÐÐÐÕÔÐÐÐÐˆ:˜ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆuÑÔÐÕÔˆuÑÔÐÐÕÔˆ:ÑÔÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐð OÐN¨eÐNÑNÔN€FØÐ!ˆ<˜6Ð!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ<˜6Ð!Ñ!Ô!Õ!Ô!ˆ<Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Ð!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐ!ˆ<˜6Ð!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ<˜6Ð!Ñ!Ô!Õ!Ô!ˆ<Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Ð!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐ!ˆ<˜6Ð!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ<˜6Ð!Ñ!Ô!Õ!Ô!ˆ<Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Ð!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐ!ˆ<˜6Ð!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ<˜6Ð!Ñ!Ô!Õ!Ô!ˆ<Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Ð!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐ!ˆ<˜6Ð!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ<˜6Ð!Ñ!Ô!Õ!Ô!ˆ<Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Ð!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐ!ˆ<˜6Ð!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ<˜6Ð!Ñ!Ô!Õ!Ô!ˆ<Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Ð!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÐ!ˆ<˜6Ð!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ<˜6Ð!Ñ!Ô!Õ!Ô!ˆ<Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Õ!Ô!˜6Ñ!Ô!Ð!Ð!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!r   c            	     óà  — t          ¦   «         } | j                             ¦   «         5 }|                     ¦   «         5 }|                     d¦  «         |                     ¦   «         }d}||u}|s—t          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}t          |d	         ¦  «        }ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |                      |¦  «        }	|	d
         }
d}|
|k    }|slt          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}}|	d         }
d}|
|k    }|slt          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}}|	d         }
d}|
|k    }|slt          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}}|	d         }
d}|
|k    }|slt          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}}|	d         }
d}|
|k    }|slt          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}}|	d         }t!          |¦  «        }d}||k    }|sÇt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d d!|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}}|	d"         }
d#}|
|k    }|slt          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}}|	d$         }
d#}|
|k    }|slt          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}}dS )%uZ   Kiá»ƒm tra bÃ³c tÃ¡ch chi tiáº¿t hiá»‡u suáº¥t tiÃªu hao dáº§u cho xe ben Howo 34H-048.48.zGSELECT id FROM erp_equipment WHERE equipment_code = 'EQ-TRUTH-TRU-027';N©úis not©z%(py0)s is not %(py3)sÚrow©rA   r&   r'   r(   r   Úequipment_codezEQ-TRUTH-TRU-027©ú==©z%(py1)s == %(py4)sr-   r/   r0   rD   rJ   Úfuel_norm_per_hourg      6@r5   i'  r7   r9   r:   i ÂëÚ	fuel_logsr4   )z/%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} > %(py7)sr?   ©rA   Úpy2r.   Úpy7úassert %(py9)sÚpy9Ú#average_consumption_liters_per_hourr   Úefficiency_percentage©r   ÚrepoÚget_connectionÚcursorÚexecuteÚfetchonerL   rM   rO   rP   rQ   rN   rR   rS   r   Úget_equipment_efficiencyr?   )rT   ÚconnÚcurre   rV   Ú@py_assert1rW   rX   Útruck_idÚdetailrU   rZ   r[   r\   Ú@py_assert6r]   Ú@py_format8Ú@py_format10s                     r   Ú%test_equipment_fuel_efficiency_detailrƒ   G   sŒ  € å(Ñ*Ô*€Gà	Œ×	$Ò	$Ñ	&Ô	&ð "¨$°·²±´ð "ÀØ�ŠÐ]Ñ^Ô^Ð^Ø�lŠl‰nŒnˆØÐˆs˜$ˆÐÐÐÕÔÐÐÐÐˆs˜$ÐÑÔÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔ˜$ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÝ�s˜4”y‘>”>ˆð	"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð ×-Ò-¨hÑ7Ô7€FØÐ"Ô#Ð9Ð'9Ð9Ð#Ð'9Ò9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð#Ð'9Ð9Ñ9Ô9Õ9Ô9Ð#Ñ9Ô9Õ9Ô9Ð'9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø�/Ô"Ð2 lÐ2Ð" lÒ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð" lÐ2Ñ2Ô2Õ2Ô2Ð"Ñ2Ô2Õ2Ô2 lÑ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ØÐ&Ô'Ð/¨4Ð/Ð'¨4Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð'¨4Ð/Ñ/Ô/Õ/Ô/Ð'Ñ/Ô/Õ/Ô/¨4Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÐ%Ô&Ð.¨Ð.Ð&¨Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð&¨Ð.Ñ.Ô.Õ.Ô.Ð&Ñ.Ô.Õ.Ô.¨Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÐ'Ô(Ð4¨9Ð4Ð(¨9Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð(¨9Ð4Ñ4Ô4Õ4Ô4Ð(Ñ4Ô4Õ4Ô4¨9Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ø�kÔ"Ð(�3Ð"Ñ#Ô#Ð( bÐ(Ð# bÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð# bÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(�3Ñ(Ô(Ð(Õ(Ô(�3Ñ(Ô(Ð(Ð(Õ(Ô(Ð"Ñ(Ô(Õ(Ô(Ð#Ñ(Ô(Õ(Ô( bÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÐ7Ô8Ð<¸1Ð<Ð8¸1Ò<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð8¸1Ð<Ñ<Ô<Õ<Ô<Ð8Ñ<Ô<Õ<Ô<¸1Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÐ)Ô*Ð.¨QÐ.Ð*¨QÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð*¨QÐ.Ñ.Ô.Õ.Ô.Ð*Ñ.Ô.Õ.Ô.¨QÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ó5   ¨E½C"D+ÄEÄ+D/	Ä/EÄ2D/	Ä3EÅEÅ	Er   r   c                ó*  — |                       d¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}|                       d|¬
¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}| 
                    ¦   «         }	d}
|
|	v }|s—t          j        d|fd|
|	f¦  «        t          j        |
¦  «        dt	          j        ¦   «         v st          j        |	¦  «        rt          j        |	¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}
}d}
|
|	v }|s—t          j        d|fd|
|	f¦  «        t          j        |
¦  «        dt	          j        ¦   «         v st          j        |	¦  «        rt          j        |	¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}
}|	d         d         }
d}|
|k    }|slt          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}
x}}d	S )uT   Kiá»ƒm tra API endpoint /v1/erp/advanced/equipment/fleet-summary cÃ³ báº£o vá»‡ JWT.z(/v1/erp/advanced/equipment/fleet-summaryi‘  rh   )z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚunauth_resp)rA   rn   r(   zassert %(py7)sro   N)ÚheaderséÈ   Ú	auth_respr   r    r"   Údatar$   r'   r(   r=   r5   r6   r7   r9   r-   r/   r0   )rE   Ústatus_coderL   rM   rO   rP   rQ   rN   rR   rS   Újson)r   r   r†   r}   r^   rZ   rX   r�   r‰   rŠ   rU   rV   rW   r[   r\   s                  r   Ú%test_fleet_fuel_summary_api_protectedr�   \   s:  € ð
 —*’*ÐGÑHÔH€KØÔ"Ð) cÐ)Ð" cÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð" cÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆ;Ñ)Ô)Ð)Õ)Ô)ˆ;Ñ)Ô)Ð)Ð)Õ)Ô)Ð"Ñ)Ô)Õ)Ô) cÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð —
’
ÐEÈ|�
Ñ\Ô\€IØÔ Ð' CÐ'Ð  CÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð  CÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆ9Ñ'Ô'Ð'Õ'Ô'ˆ9Ñ'Ô'Ð'Ð'Õ'Ô'Ð Ñ'Ô'Õ'Ô' CÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ø�>Š>ÑÔ€DØÐˆ9˜ÐÐÐÐÕÔÐÐÐÐˆ9˜ÐÑÔÕÔˆ9ÑÔÐÕÔÑÔÐÐÕÔ˜ÑÔÐÕÔ˜ÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐ$Ð Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð Ð$Ñ$Ô$Õ$Ô$ÐÑ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ Ñ$Ô$Ð$Õ$Ô$ Ñ$Ô$Ð$Ð$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ø�	Œ?Ð.Ô/Ð7°%Ð7Ð/°%Ò7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7Ð/°%Ð7Ñ7Ô7Õ7Ô7Ð/Ñ7Ô7Õ7Ô7°%Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7r   c            	     óÀ  — t          ¦   «         } | j                             ¦   «         5 }|                     ¦   «         5 }|                     d¦  «         |                     ¦   «         }d}||u}|s—t          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}t          |d	         ¦  «        }ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |                      |¦  «        }	|	d
         }
d}|
|k    }|slt          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}}|	d         }
d}|
|k    }|slt          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}}|	d         }
d}|
|k    }|slt          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}
x}}|	d         }t!          |¦  «        }d}||k    }|sÇt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}}dS )uH   Kiá»ƒm tra chi tiáº¿t hiá»‡u suáº¥t tiÃªu hao mÃ¡y xÃºc Komatsu PC200-8.zGSELECT id FROM erp_equipment WHERE equipment_code = 'EQ-TRUTH-EXC-012';Nrb   rd   re   rf   r'   r(   r   rg   zEQ-TRUTH-EXC-012rh   rj   r-   r/   r0   rk   g     €0@r5   iˆ  r7   r9   rl   r4   r+   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} >= %(py7)sr?   rm   rp   rq   rt   )rT   r{   r|   re   rV   r}   rW   rX   Úexc_idr   rU   rZ   r[   r\   r€   r]   r�   r‚   s                     r   Ú%test_excavator_fuel_efficiency_detailr�   m   så  € å(Ñ*Ô*€GØ	Œ×	$Ò	$Ñ	&Ô	&ð  ¨$°·²±´ð  ÀØ�ŠÐ]Ñ^Ô^Ð^Ø�lŠl‰nŒnˆØÐˆs˜$ˆÐÐÐÕÔÐÐÐÐˆs˜$ÐÑÔÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔ˜$ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÝ�S˜”Y‘”ˆð	 ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð  ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð ×-Ò-¨fÑ5Ô5€FØÐ"Ô#Ð9Ð'9Ð9Ð#Ð'9Ò9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð#Ð'9Ð9Ñ9Ô9Õ9Ô9Ð#Ñ9Ô9Õ9Ô9Ð'9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ØÐ&Ô'Ð/¨4Ð/Ð'¨4Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð'¨4Ð/Ñ/Ô/Õ/Ô/Ð'Ñ/Ô/Õ/Ô/¨4Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÐ%Ô&Ð-¨Ð-Ð&¨Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð&¨Ð-Ñ-Ô-Õ-Ô-Ð&Ñ-Ô-Õ-Ô-¨Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ø�kÔ"Ð)�3Ð"Ñ#Ô#Ð) rÐ)Ð# rÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð# rÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)�3Ñ)Ô)Ð)Õ)Ô)�3Ñ)Ô)Ð)Ð)Õ)Ô)Ð"Ñ)Ô)Õ)Ô)Ð#Ñ)Ô)Õ)Ô) rÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)r„   )r   r   )r   r   )r   r   r   r   )r   r   r   r   )Ú__doc__Ú
__future__r   ÚbuiltinsrO   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterL   ÚpytestÚfastapi.testclientr   Úapp.mainr   Ú)app.modules.auth.application.auth_servicer   Ú?app.modules.operations.application.equipment_efficiency_servicer   Úfixturer   r   r   r`   rƒ   r�   r�   r   r   r   ú<module>r�      sK  ððð ð #Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € €€€€Ø )Ð )Ð )Ð )Ð )Ð )à Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ Aðð ð ð ð ð ð
 „ðð ð ñ „ðð
 „ð
ð 
ð 
ñ „ð
ð „ð5ð 5ð 5ñ „ð5ð"ð "ð "ð:/ð /ð /ð*8ð 8ð 8ð 8ð"*ð *ð *ð *ð *r   