ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Google ΡΠ½ΠΎΠ²Π° Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΎ ΡΡΠ°ΡΠΎΠΌ, Π½ΠΎ Π²Π΅ΡΠ½ΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ β ΡΠ°Π·Π΄Π΅Π»ΡΠΉ ΠΈ Π²Π»Π°ΡΡΠ²ΡΠΉ. ΠΠ° ΡΡΠΎΡ ΡΠ°Π· Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΊΠΎΠ΄Π°: ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΡΠ΄ΡΠΎ ΠΈ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°.
ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ β Π·Π²ΡΡΠΈΡ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ½ΠΎ. ΠΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ΅Ρ
ΠΏΡΠΈΡΠΌΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ, ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΠΌ ΠΈ Π΄ΠΎΠ»Π³ΠΎΠ²Π΅ΡΠ½ΡΠΌ. Google Testing Blog ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π΄Π΅Π»ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° Π΄Π²Π΅ ΡΠ°ΡΡΠΈ: π‘ Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΡΠ΄ΡΠΎ (Functional Core) β
ΡΠΈΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π· ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ
ΡΡΡΠ΅ΠΊΡΠΎΠ². ΠΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΡΡ Π²Π½Π΅ ΡΠ²ΠΎΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠΈ ΠΠ, Π½ΠΈ ΡΠ΅ΡΡ, Π½ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ β ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ Π΄Π°Π½Π½ΡΠ΅. β‘οΈ ΠΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° (Imperative Shell) β
Π²ΡΡ, ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ Π²Π²ΠΎΠ΄ΠΎΠΌ-Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ, API, Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
, ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ. ΠΠ½Π° βΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρβ ΡΠ΄ΡΠΎ, Π²ΡΠ·ΡΠ²Π°Ρ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΌΠΈΡΠΎΠΌ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· Π±Π»ΠΎΠ³Π° Google. ΠΡΠ» ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ» ΠΏΠΈΡΡΠΌΠ° ΠΎ ΠΏΡΠΎΡΡΠΎΡΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ΅: // ΠΠ»ΠΎΡ
ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ
function sendUserExpiryEmail() {
for (const user