
рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЖрддрд╛ рд╣реВрдВ:
- рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реИрдВред
- рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ, рд╡реЗ рд╢рд╛рдпрдж рд╣реА рдХрднреА рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ рдФрд░ рдирд┐рд░рдВрддрд░ рдЖрдзрд╛рд░ рдкрд░ рдирд╣реАрдВ рдЪрд▓рддреЗ рд╣реИрдВред
- рдЯреЗрд╕реНрдЯ рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рд╕реАрдЖрдИ (рдХрдВрдЯреАрдиреНрдпреВрдЕрд╕ рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди) рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рддреЗ рд╣реИрдВред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдмрд╛рдж рдХрд╛ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ рдЬреЛ рдЕрдХреНрд╕рд░ рдЙрдкрдпреБрдХреНрдд рдХреМрд╢рд▓ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдВрднреАрд░ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдирдпрд╛ рдирд╣реАрдВ рд╣реИред рдЙрд╕реА рд╕рдордп, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЙрд▓реНрд▓реВ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╕рд┐рджреНрдз рддрд╕реНрд╡реАрд░ рд╕реЗ рдорд┐рд▓рддреЗ-рдЬреБрд▓рддреЗ рд╣реИрдВ: рдЬреБрдиреЗрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВ, рдкрд╣рд▓реЗ рдореЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдФрд░ рдЬрд╛рдПрдВ! рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реЗрдЦ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рдХреНрдпрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдФрд░ рдЗрд╕ рд╕рдм рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд░рд╣рдирд╛ рд╣реИред рдпрд╣реАрдВ рд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкреИрджрд╛ рд╣реБрдЖред рдореИрдВрдиреЗ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЗрд╕ рдорд╛рд░реНрдЧ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред

рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд▓реЗрдЦ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЦреБрдж рдХреЛ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдПрдВрдЧреЗ рдФрд░ рджреВрд╕рд░реА рддрд░рдл рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЙрд╕ рдорд┐рдердХ рдХреЛ рдорд┐рдЯрд╛ рджреЗрдВрдЧреЗ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрддреЛрдВ рдХреЛ рд╡рд╣рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЧреБрдгрд╡рддреНрддрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреИрд╕реЗ рддреЗрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░, рдПрдХ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░, рдЗрд╕ рд▓рд╛рдн рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдФрд░ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдВрдд рдореЗрдВ, рдЕрдВрддрд┐рдо рдЦрдВрдб рдореЗрдВ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рджреА рдЬрд╛рдПрдВрдЧреА: рдЬрдм рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдХрд╛рд╕ рдХреЛ рдХрд╛рдлреА рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рдореЗрд░рд╛ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдЬрд╛рд╡рд╛ рдмреИрдХреЗрдВрдб рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд┐рдореНрди рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: рдЬрд╛рд╡рд╛, рдЬреБрдирд┐рдЯ, рдПрдЪ 2, рдореЙрдХрд┐рдЯреЛ, рд╕реНрдкреНрд░рд┐рдВрдЧ, рд╣рд╛рдЗрдмрд░рдиреЗрдЯред рдЗрд╕реА рд╕рдордп, рд▓реЗрдЦ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╕рд╛рдорд╛рдиреНрдп рдкрд░реАрдХреНрд╖рдг рдХреЗ рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдпреБрдХреНрддрд┐рдпрд╛рдВ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ! рдкрд░реАрдХреНрд╖рдг рдмрд╣реБрдд рд╡реНрдпрд╕рдиреА рд╣реИрдВ: рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рд╕реАрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдм рдЙрдирдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд░рд╣ рд╕рдХрддреЗред
рдЯреЗрд╕реНрдЯ рдмрдирд╛рдо рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐
рдкрд░реАрдХреНрд╖рдг рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╕рдордп рдореБрдЦреНрдп рдкреНрд░рд╢реНрди: рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рдХреНрдпрд╛ рд▓рд╛рдн рд╣реЛрдВрдЧреЗ? рдкрд░реАрдХреНрд╖рдг, рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рддрдХрдиреАрдХ рдХреА рддрд░рд╣, рд╡рд┐рдХрд╛рд╕ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЧрдВрднреАрд░ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рдХреЛрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рд╕рдордп рдХреА рд▓рд╛рдЧрдд рдХреЗ рд▓рд┐рдП, рд╡реЗ рд╡рд┐рд╢реЗрд╖ рдЯреАрдо рдкрд░ рдЕрддреНрдпрдзрд┐рдХ рдирд┐рд░реНрднрд░ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдбрд┐рдВрдЧ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрдд рдХреЗ 20-30% рд╕реЗ рдХрдо рдХреА рдЧрдгрдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рддрддреНрдХрд╛рд▓ рд░рд┐рдЯрд░реНрди рдХреА рдЙрдореНрдореАрдж рдЗрд╕ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рд╣реИред
рд▓реЗрдХрд┐рди рд╣рдо рдХрд┐рд╕ рддрд░рд╣ рдХреА рджрдХреНрд╖рддрд╛ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЖрдЗрдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧреАрддреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╕рдордп рдкрд░реАрдХреНрд╖рдг рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрд╡рд╕рд░ рдЦреБрд▓рддреЗ рд╣реИрдВред
рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдкрд░ рдЪрд▓ рд░рд╣рд╛ рдХреЛрдб
рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЛ рдЙрдард╛рдирд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЕрдЧрд░ рдЗрд╕рдореЗрдВ рд▓рдЧрднрдЧ 15-20 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдЬрд┐рдирдореЗрдВ рдПрдХ рдкреВрд░реНрдг рд▓реЙрдиреНрдЪ рдореЗрдВ рдХрдИ рдорд┐рдирдЯ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рджреБрд░реНрд▓рдн рд╕реЗ рджреВрд░ рд╣реИрдВред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдЙрдирдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдпреЗ рд▓рдШреБ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рддреНрд░ рд╣реЛрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬрд╝ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рд╕рдордп рд╣реИред рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдШрдВрдЯреЗ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЛ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкреБрдирд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдХрдИ рдШрдВрдЯреЛрдВ рдХреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдЖрдк рдЖрд╡реЗрджрди рдХреЗ рдЫреЛрдЯреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрдЧрд╛ рдФрд░ рдХреЛрдб рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░реЗрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдореЗрдВ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЕрдзрд┐рдХ рдЧрд╣рди рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИред рдЕрдХреНрд╕рд░ рдЖрд╡реЗрджрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдореБрдЦреНрдп рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдВрднреАрд░ рдкреНрд░рдпрд╛рд╕ рдФрд░ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреА рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдВрдЪ рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдФрд░ рддреЗрдЬ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддреА рд╣реИред
рдПрдХ рдФрд░ рдкреНрд▓рд╕ рдкрд░реАрдХреНрд╖рдг рдХреА рдЧрдИ рдЗрдХрд╛рдИ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╡рд┐рдирд┐рдпрдорд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рддрд░реНрдХ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рд╡рд┐рдзрд┐, рдПрдХ рд╡рд░реНрдЧ, рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рдПрдХ рд╕реЗрд╡рд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣, рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рддрдХ рд╕рд╣реА рд╣реИред рдпрд╣ рд▓рдЪреАрд▓рд╛рдкрди рдЖрдкрдХреЛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрдИ рд╕реНрддрд░реЛрдВ рд╕реЗ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЙрддрд╛рд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░реЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЯреЗрд╕реНрдЯ
рдЗрд╕ рдкреНрд▓рд╕ рдХреЛ рдЕрдХреНрд╕рд░ рдЯреЗрд╕реНрдЯ рдСрдЯреЛрдореЗрд╢рди рдХреЗ рд╕рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрджреНрдзреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХрдо рдкрд░рд┐рдЪрд┐рдд рдХреЛрдг рд╕реЗ рджреЗрдЦреЗрдВред рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдирдП рдЕрд╡рд╕рд░ рдЦреЛрд▓рддрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдП рдкреНрд░рддреНрдпреЗрдХ рдирдП рдбреЗрд╡рд▓рдкрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдореМрдЬреВрджрд╛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рдмрд╣реБрдд рдХрдо рдЖрдВрдХрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдзреБрдирд┐рдХ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рд╡рд╣реА рд▓реЛрдЧ рд╢рд╛рдпрдж рд╣реА рдХрднреА 1-2 рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЪреВрдВрдХрд┐ рдЯреАрдореЛрдВ рдореЗрдВ рдХрдИ рд▓реЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд╣рд░ 2-3 рдорд╣реАрдиреЗ рдореЗрдВ рдПрдХ рдирдП рдкреНрд░рддрд┐рднрд╛рдЧреА рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдард┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рд╕рдВрдкреВрд░реНрдг рдкреАрдврд╝рд┐рдпреЛрдВ рдХреЗ рдмрджрд▓рд╛рд╡ рд╕реЗ рдЧреБрдЬрд░ рд░рд╣реА рд╣реИрдВ! рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрд┐рд╕реА рднреА рднрд╛рдЧ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХрдИ рдмрд╛рд░ рджреЗрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╡рд┐рд╕рд░реНрдЬрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдб рд▓реЙрдЬрд┐рдХ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЕрдзреНрдпрдпрди рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред
рджреВрд╕рд░реЗ, рдЖрд╕рд╛рдиреА рд╕реЗ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╕рддрдд рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЦреЛрд▓рддрд╛ рд╣реИред рдпрд╣ рд╢рдмреНрдж, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕реАрдЖрдИ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдХреЛрдб рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХреБрдЦреНрдпрд╛рдд рдмреЙрдп рд╕реНрдХрд╛рдЙрдЯ рдирд┐рдпрдо рдХрд╛ рдирд┐рдпрдорд┐рдд рдкрд╛рд▓рди рд╣реИ "рдЕрдкрдиреЗ рдЖрдЧрдорди рд╕реЗ рдкрд╣рд▓реЗ рдкрд╛рд░реНрдХрд┐рдВрдЧ рдХреНрд▓реАрдирд░ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ", рдЬреЛ рдХреЛрдб рдЖрдзрд╛рд░ рдЧрд┐рд░рд╛рд╡рдЯ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд▓рдВрдмреЗ рдФрд░ рдЦреБрд╢рд╣рд╛рд▓ рдЬреАрд╡рди рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред
рдбрд┐рдмрдЧрд┐рдВрдЧ
рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд┐рдВрджреБ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдФрд░ рдЗрд╕реЗ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХреЛ рдорд╛рдкрдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд╡рд┐рднрд╛рдЬреНрдп рд╣реИрдВред рдлрд┐рд░ рднреА, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЧреБрдгрд╡рддреНрддрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рдордп рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрддреА рд╣реИ, рдбрд┐рдмрдЧрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рд▓рдЧрднрдЧ рдкреВрд░реНрдг рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рддрдХред
рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛрдб рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреАрдмрдЧрд┐рдВрдЧ рдкрд░ рд╕рдордп рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдХреЗрд╡рд▓ рдпрд╣ рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд╛рд╕ рд▓рд╛рдЧрддреЛрдВ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░реЗрдЧрд╛ред рд╢реЗрд╖ рдкрд░реАрдХреНрд╖рдг рдмреЛрдирд╕ - рдХреЛрдб рдЖрдзрд╛рд░ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ (рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ), рджреЛрд╖реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛, рдХрд┐рд╕реА рднреА рд╕рдордп рдХреЛрдб рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдЖрджрд┐ - рд▓рдЧрднрдЧ рдореБрдлреНрдд рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред
рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдЕрднреНрдпрд╛рд╕ рддрдХ
рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рд╕рдм рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рд╡реНрдпрд╛рдкрд╛рд░ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░реЛред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдк рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рддреБрд░рдВрдд рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдХреЗ рд╕реВрддреНрд░рдХрд╛рд░реНрдп
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ, рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рдХреЗ рдмреИрдХрдПрдВрдб рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╣рдо рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреАрдЖрдИ рд▓рд┐рдЦреЗрдВрдЧреЗ: рдмрдирд╛рдирд╛, рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рд╕рдВрдкрд╛рджрди рдХрд░рдирд╛ред рд╕рд╛рде рд╣реА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддрд░реАрдХреЗ: рдПрдХ "рдкрд╕рдВрджреАрджрд╛ рдЙрддреНрдкрд╛рдж" рдХреЛ рдмрджрд▓рдирд╛ рдФрд░ рдПрдХ рдЖрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдмреЛрдирд╕ рдЕрдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ред
рдбреЛрдореЗрди рдореЙрдбрд▓
рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЕрдзрд┐рднрд╛рд░ рдирд╣реАрдВ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдиреНрдпреВрдирддрдо рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рд╡рд░реНрдЧреЛрдВ рддрдХ рд╕реАрдорд┐рдд рд░рдЦрддреЗ рд╣реИрдВред
рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо, рдПрдХ рдкрд╕рдВрджреАрджрд╛ рдЙрддреНрдкрд╛рдж рдХрд╛ рд▓рд┐рдВрдХ рдФрд░ рдПрдХ рдзреНрд╡рдЬ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдПрдХ рдкреНрд░реАрдорд┐рдпрдо рдЧреНрд░рд╛рд╣рдХ рд╣реИред
рдЙрддреНрдкрд╛рдж (рдЙрддреНрдкрд╛рдж) - рдирд╛рдо, рдореВрд▓реНрдп, рдЫреВрдЯ рдФрд░ рдзреНрд╡рдЬ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛
рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб рдХреА рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред
рд╡рд░реНрдЧ рд╕реНрддрд░рд┐рдд рд╣реИрдВ:
- рдореЙрдбрд▓ - рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдбреЛрдореЗрди рдореЙрдбрд▓;
- рдЬреЗрдкреАрдП - рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА;
- рд╕реЗрд╡рд╛ - рдЖрд╡реЗрджрди рдХрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ;
- рдирд┐рдпрдВрддреНрд░рдХ - рдПрдкреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рдпрдВрддреНрд░рдХред
рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд╕рдВрд░рдЪрдирд╛ред
рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдПрдВ рдореВрд▓ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреА рддреИрдпрд╛рд░реА рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХред
рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдФрд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрдХреНрд╕рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдПрдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рдиреЛрдВ, рдореЙрдбреНрдпреВрд▓, рдкреИрдХреЗрдЬ, sourceSetsред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдЪреБрдирд╛рд╡ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрд╡рд╛рдж рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдПрдХ рдЕрд▓рдЧ рд╕реНрд░реЛрдд рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВ - рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рдирдЯреЗрд╕реНрдЯред

рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рддрд░рд╣, рдПрдХреАрдХрд░рдг рдХреЛрдб рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдПрдВ рдореВрд▓ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдзрд╛рд░ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреЛрд╣рд░рд╛рд╡ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЙрдкрдпреЛрдЧреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рддрд░реАрдХреЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг
рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВред рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рддрд░реНрдХ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рддреБрд░рдВрдд рдПрдХреАрдХрд░рдг рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрдиреНрд╣реЗрдВ рдХрднреА-рдХрднреА рд╕реНрд╡реАрдХреГрддрд┐ рд╡рд╛рд▓реЗ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╡реЗрджрди рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрддрд░ рдХреЗ рдПрдХреАрдХрд░рдг рдЪреЗрдХ рдХреНрдпрд╛ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкрд╕рдВрдж рдХреА рдкреВрд░реА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рдЖрдк рдкрд░реАрдХреНрд╖рдг рд╕реЗ рд╕реБрд▓рдн, рд╕рдВрджрд░реНрдн рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛, рд╕рдВрдкреВрд░реНрдг рд╕рдВрджрд░реНрдн рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдкреВрд░реНрдг рд╕рд░реНрд╡рд░ рднреА рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝рддрд╛ рд╣реИ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрддреА рдЬрд╛рддреА рд╣реИред рдЕрдХреНрд╕рд░ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рд╣реЛрддреЗ рд╣реИрдВред
рд╕рд░реНрд╡рд░ рдХреЛ рд╢реБрд░реВ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдирд┐рдпрдВрддреНрд░рдХ рдкрд░реАрдХреНрд╖рдг рд╣реЛрдЧрд╛ред рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдпрд╣ рдкреВрд░реЗ рд╕рдВрджрд░реНрдн рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмреАрдЪ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
ProductController
рд╡рд░реНрдЧ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
@PostMapping("new") public Product createProduct(@RequestBody Product product) { return productService.createProduct(product); } @GetMapping("{productId}") public Product getProduct(@PathVariable("productId") long productId) { return productService.getProduct(productId); } @PostMapping("{productId}/edit") public void updateProduct(@PathVariable("productId") long productId, @RequestBody Product product) { productService.updateProduct(productId, product); }
рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рдПрдХ рддрд░рдл рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЗрд╕реЗ рдлреЗрдВрдХреЗ рдЧрдП рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ,
ProductService
рдореЗрдВ рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ:
@Transactional(readOnly = true) public Product getProduct(Long productId) { return productRepository.findById(productId) .orElseThrow(() -> new DataNotFoundException("Product", productId)); } @Transactional public Product createProduct(Product product) { return productRepository.save(new Product(product)); } @Transactional public Product updateProduct(Long productId, Product product) { Product dbProduct = productRepository.findById(productId) .orElseThrow(() -> new DataNotFoundException("Product", productId)); dbProduct.setPrice(product.getPrice()); dbProduct.setDiscount(product.getDiscount()); dbProduct.setName(product.getName()); dbProduct.setIsAdvertised(product.isAdvertised()); return productRepository.save(dbProduct); }
ProductRepository
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ:
public interface ProductRepository extends JpaRepository<Product, Long> { }
рд╕рдм рдХреБрдЫ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреЛ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрдИ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рджреЛрд╣рд░рд╛рд╡ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЕрдм рдПрдХ рднреА рдкрд░реАрдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд 10-15ред рдмрджрд▓реЗ рдореЗрдВ рдЗрд╕реЗ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рдХреЛрдИ рджреЛрд╣рд░рд╛рд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреЗрд╡рд▓ рдЧрд┐рд░реА рд╣реБрдИ рдкрд░реАрдХреНрд╖рд╛ рдореЗрдВ рддреБрд░рдВрдд рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
рд╡рд┐рдиреНрдпрд╛рд╕рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмреЗрд╕ рдХреНрд▓рд╛рд╕
BaseControllerIT
рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдХреБрдЫ рдлрд╝реАрд▓реНрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
@RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) @Transactional public abstract class BaseControllerIT { @Autowired protected ProductRepository productRepository; @Autowired protected CustomerRepository customerRepository; }
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЯреЗрд╕реНрдЯ рдХреНрд▓рд╛рд╕ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЙрдирдХреА рднреВрдорд┐рдХрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╣рд╛рдпрдХ рд╣реИ: рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ред рдЬрдм рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрдм рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИред
рд╡рд╕рдВрдд рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
@SpringBootTest
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╕рдВрджрд░реНрдн рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
WebEnvironment.NONE
рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡реЗрдм рд╕рдВрджрд░реНрдн рдХреЛ
WebEnvironment.NONE
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
@Transactional
- рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реЛрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рд▓реЗрдирджреЗрди рдореЗрдВ рд╕рднреА рд╡рд░реНрдЧ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг рд╕рдВрд░рдЪрдирд╛рдЪрд▓реЛ
ProductController
рд╡рд░реНрдЧ -
ProductControllerIT
рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдПрдХ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
@Test public void createProduct_productSaved() { Product product = product("productName").price("1.01").discount("0.1").advertised(true).build(); Product createdProduct = productController.createProduct(product); Product dbProduct = productRepository.getOne(createdProduct.getId()); assertEquals("productName", dbProduct.getName()); assertEquals(number("1.01"), dbProduct.getPrice()); assertEquals(number("0.1"), dbProduct.getDiscount()); assertEquals(true, dbProduct.isAdvertised()); }
рдкрд░реАрдХреНрд╖рд╛ рдХреЛрдб рдПрдХ рдирдЬрд╝рд░ рдореЗрдВ рдмреЗрд╣рдж рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рдЦрдВрдб рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓рд╛рдн рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рд╢рд░реАрд░ рдХреЛ рддреАрди рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ рдЬреЛ рдиреЗрддреНрд░рд╣реАрди рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рдирд╛, рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛, рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдирд╛ред рдЗрд╕реА рд╕рдордп, рдпрд╣ рдмрд╣реБрдд рд╣реА рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдлрд┐рдЯ рд╣реЛред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИ, рдЬрдм рдбреЗрдЯрд╛ рддреИрдпрд╛рд░реА рдЕрдиреБрднрд╛рдЧ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рди рдмрд╛рдж рдореЗрдВ рдЪреЗрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣:
assertEquals(product, dbProduct);
рдЙрддреНрдкрд╛рдж рдЬрд╛рдирдХрд╛рд░реА (
updateProduct
) рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддреАрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреА рджреГрд╢реНрдп рдЕрдЦрдВрдбрддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛ рдкрдВрдХреНрддрд┐ рдлреАрдб рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
@Test public void updateProduct_productUpdated() { Product product = product("productName").build(); productRepository.save(product); Product updatedProduct = product("updatedName").price("1.1").discount("0.5").advertised(true).build(); updatedProduct.setId(product.getId()); productController.updateProduct(product.getId(), updatedProduct); Product dbProduct = productRepository.getOne(product.getId()); assertEquals("updatedName", dbProduct.getName()); assertEquals(number("1.1"), dbProduct.getPrice()); assertEquals(number("0.5"), dbProduct.getDiscount()); assertEquals(true, dbProduct.isAdvertised()); }
рдЖрдЯрд╛ рдХреЗ рддреАрди рднрд╛рдЧреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдХреА рддреИрдпрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг рдмрд┐рд▓реНрдбрд░реЛрдВ рдореЗрдВ рдЙрддреНрдХреГрд╖реНрдЯ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рд╣реИрдВ рдЬреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВред рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЕрдВрджрд░ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЫрд┐рдкрд╛рддреЗ рд╣реБрдПред рдЬрдЯрд┐рд▓ рдЬрд╛рдВрдЪ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рднреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореИрдЪрд░реНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рд╕рднреА рд╕рд░рд▓реАрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреА рджреГрд╢реНрдпрддрд╛ рдХреЛ рдЦреЛрдирд╛ рдирд╣реАрдВ рд╣реИ: рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд┐рдирд╛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗред
рдЯреЗрд╕реНрдЯ рдмрд┐рд▓реНрдбрд░реЛрдВрдЯреЗрд╕реНрдЯ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реНрдХ рдХреЛ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рдирд╛ рдкрд░реАрдХреНрд╖рдг рд░рдЦрд░рдЦрд╛рд╡ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореЙрдбрд▓ рдлрд╝реАрд▓реНрдб рднрд░рдиреЗ рдЬреЛ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдмрд┐рд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реАрдзреЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд╛рдкрддрд╛ рдлрд╝реАрд▓реНрдб рдХреЛ рднрд░ рджреЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдирдП рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдореЙрдбрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
ProductBuilder
рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
public static ProductBuilder product(String name) { return new ProductBuilder() .name(name) .advertised(false) .price("0.00"); }
рдЯреЗрд╕реНрдЯ рдирд╛рдордпрд╣ рд╕рдордЭрдирд╛ рдЬрд░реВрд░реА рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреНрдпрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдЕрдкрдиреЗ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рджреЗрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред
getProduct
рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
@Test public void getProduct_oneProductInDb_productReturned() { Product product = product("productName").build(); productRepository.save(product); Product result = productController.getProduct(product.getId()); assertEquals("productName", result.getName()); } @Test public void getProduct_twoProductsInDb_correctProductReturned() { Product product1 = product("product1").build(); Product product2 = product("product2").build(); productRepository.save(product1); productRepository.save(product2); Product result = productController.getProduct(product1.getId()); assertEquals("product1", result.getName()); }
рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХреЗ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рддреАрди рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рдХреЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкрд░реАрдХреНрд╖рдг рдХреА рдЧрдИ рд╡рд┐рдзрд┐, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдирд╛рдоред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд┐рд╕реА рдиреЗ рднреА рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдХреЛ рд░рджреНрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рддреЛ рдирд╛рдо рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрддреНрдкрд╛рдж рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ)ред рдЗрд╕ рдирд╛рдордХрд░рдг рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╕рд╛рд░ рдХреЛрдб рдХреЛ рд╕реАрдЦреЗ рдмрд┐рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЦрд┐рдбрд╝рдХреА рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕реНрдкрд╖реНрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдЖрдорддреМрд░ рдкрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖рд╡рд╣ рд╕рдм рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░, рдЪрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдПрдХ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ
ProductController
рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдмрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд╣рдореЗрд╢рд╛ рд▓рд╛рдкрддрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдЙрдирдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрддреА рд╣реИред рдпрд╣, рдмрджрд▓реЗ рдореЗрдВ, рдкрд░реАрдХреНрд╖рдг рдХреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдЖрдорддреМрд░ рдкрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдмреЛрдирд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдХреА рд╡реЗрдм рдкрд░рдд рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдЖрдзрд╛рд░ (
@WebMvcTest
,
MockMvc
,
@MockBean
) рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕реНрдЯрдм рдХреЗ рд╕рд╛рде рд╡реЗрдм рдкрд░рдд рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдкреВрд░реНрдг рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд▓реЗрдирджреЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдХреЗ рд▓реЗрдирджреЗрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
CustomerControllerServerIT
рд╡рд░реНрдЧ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг
рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ:
- рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдорд┐рд▓рд┐рд╕реЗрдХрдВрдб рд▓реЗрддрд╛ рд╣реИ;
- рдкрд░реАрдХреНрд╖рдг рдХреА рдЧрдИ рдЗрдХрд╛рдИ рдХрд╛ рдЫреЛрдЯрд╛ рдЖрдХрд╛рд░;
- рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рд╡рд┐рдзрд┐ рдХреЛ рд╕реАрдзреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░реА рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛрддреА рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЙрдирдХреЗ рд╕реНрд╡рднрд╛рд╡ рд╕реЗ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╡реЗрджрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд▓реЗрдЦрди рдПрдХреАрдХрд░рдг рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдЗрдХрд╛рдИ рдХрд╛ рддрд░реНрдХ рд╕рд░рд▓ рд╣реИ, рддреЛ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рджреЛрд╣рд░рд╛рд╡ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд▓рд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЕрдзрд┐рдХ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рд╡рд░реНрдЧ рдЬреЛ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдпреЛрдЧреНрдп рд╣реИ, рд╡рд╣ рд╣реИ
BonusPointCalculator
ред рдЗрд╕рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЦрд░реАрджрд╛рд░ рдХреЛ рдЙрддреНрдкрд╛рдж рдХреА рд▓рд╛рдЧрдд рдХрд╛ 10% рдХрд╛ рдмреЛрдирд╕ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдирд┐рдореНрди рд╕реВрдЪреА рд╕реЗ 2 рдЧреБрдгрдХ рд╕реЗ рдХрдИ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реИ:
- рдЙрддреНрдкрд╛рдж рдХреА рд▓рд╛рдЧрдд 10,000 (├Ч 4) рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ;
- рдЙрддреНрдкрд╛рдж рдПрдХ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдЕрднрд┐рдпрд╛рди (├Ч 3) рдореЗрдВ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реИ;
- рдЙрддреНрдкрд╛рдж рдЧреНрд░рд╛рд╣рдХ рдХрд╛ "рдкрд╕рдВрджреАрджрд╛" рдЙрддреНрдкрд╛рдж рд╣реИ (├Ч 5);
- рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░реАрдорд┐рдпрдо рд╕реНрдерд┐рддрд┐ (├Ч 2) рд╣реИ;
- рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ рдкреНрд░реАрдорд┐рдпрдо рд╕реНрдерд┐рддрд┐ рд╣реИ рдФрд░ "рдкрд╕рдВрджреАрджрд╛" рдЙрддреНрдкрд╛рдж рдЦрд░реАрджрддрд╛ рд╣реИ, рддреЛ рджреЛ рд╕рдВрдХреЗрддрд┐рдд рдЧреБрдгрдХ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ (├Ч 8) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрди рдмреЛрдирд╕ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдЪреАрд▓реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рддрдВрддреНрд░ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЦреБрдж рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддрдХ рд╕реАрдорд┐рдд рд░рдЦрддреЗ рд╣реИрдВред рдЧреБрдгрдХ рдЧрдгрдирд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
private List<BigDecimal> calculateMultipliers(Customer customer, Product product) { List<BigDecimal> multipliers = new ArrayList<>(); if (customer.getFavProduct() != null && customer.getFavProduct().equals(product)) { if (customer.isPremium()) { multipliers.add(PREMIUM_FAVORITE_MULTIPLIER); } else { multipliers.add(FAVORITE_MULTIPLIER); } } else if (customer.isPremium()) { multipliers.add(PREMIUM_MULTIPLIER); } if (product.isAdvertised()) { multipliers.add(ADVERTISED_MULTIPLIER); } if (product.getPrice().compareTo(EXPENSIVE_THRESHOLD) >= 0) { multipliers.add(EXPENSIVE_MULTIPLIER); } return multipliers; }
рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рджреЛ рдпрд╛ рддреАрди рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдпрд╣рд╛рдВ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдРрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рд╕рд╣реА рд╣реИред
рдЗрд╕реА рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЛ
BonusPointCalculatorTest
рдХреНрд▓рд╛рд╕ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реИрдВ:
@Test public void calculate_oneProduct() { Product product = product("product").price("1.00").build(); Customer customer = customer("customer").build(); Map<Product, Long> quantities = mapOf(product, 1L); BigDecimal bonus = bonusPointCalculator.calculate(customer, list(product), quantities::get); BigDecimal expectedBonus = bonusPoints("0.10").build(); assertEquals(expectedBonus, bonus); } @Test public void calculate_favProduct() { Product product = product("product").price("1.00").build(); Customer customer = customer("customer").favProduct(product).build(); Map<Product, Long> quantities = mapOf(product, 1L); BigDecimal bonus = bonusPointCalculator.calculate(customer, list(product), quantities::get); BigDecimal expectedBonus = bonusPoints("0.10").addMultiplier(FAVORITE_MULTIPLIER).build(); assertEquals(expectedBonus, bonus); }
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ -
calculate
рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд░реНрдЧ рдЕрдиреБрдмрдВрдз рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЧреИрд░-рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдФрд░ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЯреВрдЯрдиреЗ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдЬрдм рд╣рдордиреЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдВрддрд░рд┐рдХ рддрд░реНрдХ рдХреА рдЬрд╛рдБрдЪ рдХреА, рддреЛ рд╣рдореЗрдВ рдЕрдм рдЗрди рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдПрдХреАрдХрд░рдг рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкрд░реАрдХреНрд╖рдг рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
@Test public void calculateBonusPoints_twoProductTypes_correctValueCalculated() { Product product1 = product("product1").price("1.01").build(); Product product2 = product("product2").price("10.00").build(); productRepository.save(product1); productRepository.save(product2); Customer customer = customer("customer").build(); customerRepository.save(customer); Map<Long, Long> quantities = mapOf(product1.getId(), 1L, product2.getId(), 2L); BigDecimal bonus = customerController.calculateBonusPoints( new CalculateBonusPointsRequest("customer", quantities) ); BigDecimal bonusPointsProduct1 = bonusPoints("0.10").build(); BigDecimal bonusPointsProduct2 = bonusPoints("1.00").quantity(2).build(); BigDecimal expectedBonus = bonusPointsProduct1.add(bonusPointsProduct2); assertEquals(expectedBonus, bonus); }
рдЬреИрд╕рд╛ рдХрд┐ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реЗрдЯ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рдЖрд╡реЗрджрди рдХреА рдкреВрд░реНрдг рд╢реБрджреНрдзрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдХреЛрдб рдореЗрдВ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд╛рдлреА рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдЕрдиреНрдп рдмреЛрдирд╕ рджреЗрддрд╛ рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдереЗред рдпрд╣ рдЕрдзреНрдпрд╛рдп рдореБрдЦреНрдп рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдЧрд╛ рдЬреЛ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдФрд░ рдХрдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд╛рдЧрддреЛрдВ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
рдирдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдПрдХ рдмрдбрд╝реА рд╡рд┐рд░рд╛рд╕рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рд╣реМрд╕рд▓реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХреМрд╢рд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдирдП рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрджрд┐ рдирдП рдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЖрдВрддрд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп рдХрдо рдпрд╛ рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдкреВрд░реНрдг-рд╡рд┐рдХрд╕рд┐рдд рдЕрдиреБрднрд╡ рдирд╣реАрдВ рджреЗрдВрдЧреЗред
рдирд┐рдпрдорд┐рдд рдкрд░реАрдХреНрд╖рдг рд░рди рд╕реЗрдЯ рдХрд░реЗрдВред рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдирд┐рдпрдорд┐рдд рдЖрдзрд╛рд░ рдкрд░ рдирд╣реАрдВ рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рди рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ - рдХреЛрдб рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ - рдмрд▓реНрдХрд┐ рдЬрд▓реНрджреА рд╕реЗ рдЖрдЙрдЯрдбреЗрдЯреЗрдб рднреА рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣рд░ рдмрд╛рд░ рдХреЛрдб рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдкрд░ рдХрдо рд╕реЗ рдХрдо рдиреНрдпреВрдирддрдо CI рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЙрдиреНрдЪ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдмреЗрд╣рдж рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдХрд╡рд░ рдХрд╛ рдкреАрдЫрд╛ рди рдХрд░реЗрдВред рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡реЛрддреНрддрдо рдЧреБрдгрд╡рддреНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рд╛рд╣рд┐рддреНрдп (рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд┐рдВрдХ) рдпрд╛ рдПрдХ рд╕рдХреНрд╖рдо рд╕рдВрд░рдХреНрд╖рдХ рдпрд╣рд╛рдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрд╡-рднрд░рд╛рдИ рд╢рдВрдХреБ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд░рджреНрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдмрд╛рдХреА рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд╣реИрдВ: рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЖрдк рдХреЗрд╡рд▓ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рд╕рд╛рде рд░рд╣рдиреЗ рдХреЗ рдмрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХреНрд╖рддрд┐ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реА рдмрд╛рд░ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╕реБрдВрджрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реМ рдкреНрд░рддрд┐рд╢рдд рдХрд╡рд░реЗрдЬ рдХреА рддрд░рд╣ рдкреАрдЫрд╛ рди рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдореБрдЦреНрдп рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рджреВрд░ рдордд рдЬрд╛рдУред "рдорд╛рддреНрд░рд╛ рдмрдирд╛рдо рдЧреБрдгрд╡рддреНрддрд╛" рдХреЗ рд╡рд┐рд╖рдп рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реБрдП, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдИрдорд╛рдирджрд╛рд░ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рджреВрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЖрд╡реЗрджрди рдХреЗ рдЕрддреНрдпрдзрд┐рдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдмрджрд▓реЗ рдореЗрдВ, рдпрд╣ рдмрд╛рдж рдХреЗ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрдзрд╛рд░ рдореЗрдВ рдПрдХ рдЧрдВрднреАрд░ рдЕрд╡рд░реЛрдзрдХ рдХрд╛рд░рдХ рдмрди рдЬрд╛рдПрдЧрд╛ред рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рддрднреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдпрд╛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рдореВрд╣ рдореЗрдВ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рд╣реЛ, рдЬреЛ рдПрдХреАрдХрд░рдг рд╕реНрддрд░ рдкрд░ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛред
рдареВрдВрда рд╡рд░реНрдЧреЛрдВ рдФрд░ рдЖрд╡реЗрджрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рджреВрд░ рдордд рдЬрд╛рдУред рд╕реНрдЯрдмреНрд╕ (рд╕реНрдЯрдм, рдореЙрдХ) рдПрдХ рдФрд░ рдЙрдкрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрддреБрд▓рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рд╕рдВрддреБрд▓рди рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рддрд░рдл, рдЗрдХрд╛рдИ рдХрд╛ рдкреВрд░реНрдг рдЕрд▓рдЧрд╛рд╡ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рддрд░реНрдХ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрд╛рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд╛рд╕ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде, рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдЕрддреНрдпрдзрд┐рдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИред
рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдмрд┐рдирд╛ рдПрдХреАрдХрд░рдг рдХреЗ рдкрд░реАрдХреНрд╖рдгред рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддреА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕, рд╕рдВрджреЗрд╢ рдХрддрд╛рд░реЛрдВ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИред рдмреЗрд╢рдХ, рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЙрдкрдпреЛрдЧреА рд╣реИред рдХрдо рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдВрддрдГрдХреНрд░рд┐рдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдирдХреЗ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ:
- рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдорд╢реАрди рдкрд░ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд╕реЗ рдирдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рдФрд░ CI рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
- рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдмрд╛рд╣рд░реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛, рдФрд░ рдЙрдирдХреЗ рдЙрдиреНрдореВрд▓рди рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
- рдпрджрд┐ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рдо рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рджреВрд╕рд░реЛрдВ рдкрд░ рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдкреНрд░рднрд╛рд╡ рд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдорд╢реАрди рдкрд░ рд╕реНрд╡рдЪреНрдЫ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдЯреВрдЯ рдЬрд╛рдПрдЧреАред
- рдЯреЗрд╕реНрдЯ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: рдПрдХ рдкреВрд░реНрдг рд░рди рджрд╕рд┐рдпреЛрдВ рдорд┐рдирдЯ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рджреВрд░рд╕реНрде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓рд╛рднреЛрдВ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереАред
рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрджрд░реНрдн рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВред рдЕрдХреНрд╕рд░, рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдирдХреЗ рдмреАрдЪ рд╕рдорд╛рди рд╕рдВрджрд░реНрдн рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрдкреНрд░рд┐рдВрдЧ рдкреНрд░рд▓реЗрдЦрди рднреА рдРрд╕реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рдПрдХ-рджреВрд╕рд░реЗ рдкрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкреНрд░рднрд╛рд╡ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреВрдВрдХрд┐ рд╡реЗ рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдХреНрд░рдо рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдРрд╕реЗ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдирд┐рдпрдорд┐рдд рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рдРрд╕рд╛ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рд╕реЗ рдкреАрдЫреЗ рдирд╣реАрдВ рд╣рдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХрд┐рдП рдЧрдП рд╕рднреА рд▓реЗрдирджреЗрди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрджрд┐ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдмрдЪрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк
@DirtiesContext
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдордиреЛрд░рдВрдЬрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
, . , - . , . , , тАФ , .
. , , . , , .
TDD (Test-Driven Development). TDD , , . , , . , , .
, ?
, :
- ( )? .
- , ( , CI)? .
- ? .
- ? . , , .
, . , , - . тАФ .
рдирд┐рд╖реНрдХрд░реНрд╖
, . - , . , - . тАФ , , -. , .
, , , !
GitHub