{"id":61,"date":"2021-10-01T09:26:55","date_gmt":"2021-10-01T09:26:55","guid":{"rendered":"https:\/\/quera.ir\/?p=61"},"modified":"2022-01-26T14:36:20","modified_gmt":"2022-01-26T14:36:20","slug":"quera-jump-courses","status":"publish","type":"post","link":"https:\/\/quera.org\/blog\/quera-jump-courses\/","title":{"rendered":"\u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc \u062a\u0633\u062a\u200c\u0646\u0648\u06cc\u0633\u06cc \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e\u00bb \u06a9\u0648\u0626\u0631\u0627 \u06a9\u0627\u0644\u062c \u0631\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0627\u0648\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f"},"content":{"rendered":"\n<p style=\"font-size:14.5px\">\u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u062c\u0646\u06af\u0648\u00bb \u0648 \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u0644\u0627\u0631\u0627\u0648\u0644\u00bb \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634 \u062c\u0646\u06af\u0648 \u0648 \u0644\u0627\u0631\u0627\u0648\u0644 \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0634\u0627\u0645\u0644 \u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062f\u0627\u0648\u0631\u06cc \u0648 \u0627\u0645\u062a\u06cc\u0627\u0632\u062f\u0647\u06cc \u0622\u0646\u200c\u0647\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc\u060c \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u06a9\u0648\u0626\u0631\u0627 \u06a9\u0627\u0644\u062c \u0631\u0627 \u0627\u0632 \u0633\u0627\u06cc\u0631 \u062f\u0648\u0631\u0647\u200c\u0647\u0627 \u0645\u062a\u0645\u0627\u06cc\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0627\u0645\u0627 \u0637\u0631\u0627\u062d\u06cc \u0686\u0646\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc\u06cc \u0628\u0647 \u0645\u0631\u0627\u062a\u0628 \u0633\u062e\u062a\u200c\u062a\u0631 \u0627\u0632 \u0633\u0627\u06cc\u0631 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0627\u0633\u062a. \u0637\u0631\u0627\u062d\u0627\u0646 \u0627\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0646\u0648\u0634\u062a\u0646 \u062f\u0631\u0633\u200c\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0645\u062a\u0646\u06cc\u060c \u0636\u0628\u0637 \u0648\u06cc\u062f\u06cc\u0648\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0648 \u0646\u0648\u0634\u062a\u0646 \u0635\u0648\u0631\u062a \u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u060c \u062a\u0633\u062a\u200c\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627 \u0646\u0648\u0634\u062a\u0647\u200c\u0627\u0646\u062f \u06a9\u0647 \u0628\u0639\u0636\u0627\u064b \u0686\u0627\u0644\u0634\u06cc \u0647\u0633\u062a\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0646\u062d\u0648\u0647\u200c\u06cc \u062f\u0627\u0648\u0631\u06cc \u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc \u0641\u0635\u0644 \u00ab\u062a\u0633\u062a\u200c\u0646\u0648\u06cc\u0633\u06cc\u00bb \u062f\u0648\u0631\u0647\u200c\u06cc \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u0644\u0627\u0631\u0627\u0648\u0644\u00bb \u0648 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor:pointer\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/quera.org\/blog\/quera-jump-courses\/#%D8%A7%DB%8C%D8%AF%D9%87%E2%80%8C%DB%8C_%D8%A7%D9%88%D9%84%DB%8C%D9%87%E2%80%8C%DB%8C_%D8%B3%D8%A4%D8%A7%D9%84%D8%A7%D8%AA_%D9%88_%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C_%DA%86%D8%A7%D9%84%D8%B4\" >\u0627\u06cc\u062f\u0647\u200c\u06cc \u0627\u0648\u0644\u06cc\u0647\u200c\u06cc \u0633\u0624\u0627\u0644\u0627\u062a \u0648 \u0628\u0631\u0631\u0633\u06cc \u0686\u0627\u0644\u0634<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/quera.org\/blog\/quera-jump-courses\/#%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1_%D8%AA%D8%B3%D8%AA%E2%80%8C%D9%87%D8%A7\" >\u0633\u0627\u062e\u062a\u0627\u0631 \u062a\u0633\u062a\u200c\u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/quera.org\/blog\/quera-jump-courses\/#%D8%AA%D8%B3%D8%AA%E2%80%8C%D9%87%D8%A7_%D8%B1%D8%A7_%D8%AA%D8%B3%D8%AA_%DA%A9%D9%86%DB%8C%D9%85\" >\u062a\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u062a\u0633\u062a \u06a9\u0646\u06cc\u0645!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/quera.org\/blog\/quera-jump-courses\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D9%BE%DB%8C%D8%A7%D8%AF%D9%87%E2%80%8C%D8%B3%D8%A7%D8%B2%DB%8C%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%85%D8%AE%D8%AA%D9%84%D9%81_%D8%A7%D8%B2_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87\" >\u0627\u06cc\u062c\u0627\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/quera.org\/blog\/quera-jump-courses\/#%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C_%D8%AA%D8%B3%D8%AA%E2%80%8C%D9%87%D8%A7%DB%8C_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1_%D8%AF%D8%B1_PHPUnit\" >\u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 PHPUnit<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/quera.org\/blog\/quera-jump-courses\/#%D8%AC%D9%85%D8%B9%E2%80%8C%D8%A8%D9%86%D8%AF%DB%8C\" >\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"has-medium-font-size wp-block-heading\" id=\"\u0627\u06cc\u062f\u0647-\u06cc-\u0627\u0648\u0644\u06cc\u0647-\u06cc-\u0633\u0624\u0627\u0644\u0627\u062a-\u0648-\u0628\u0631\u0631\u0633\u06cc-\u0686\u0627\u0644\u0634\"><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AF%D9%87%E2%80%8C%DB%8C_%D8%A7%D9%88%D9%84%DB%8C%D9%87%E2%80%8C%DB%8C_%D8%B3%D8%A4%D8%A7%D9%84%D8%A7%D8%AA_%D9%88_%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C_%DA%86%D8%A7%D9%84%D8%B4\"><\/span><strong>\u0627\u06cc\u062f\u0647\u200c\u06cc \u0627\u0648\u0644\u06cc\u0647\u200c\u06cc \u0633\u0624\u0627\u0644\u0627\u062a \u0648 \u0628\u0631\u0631\u0633\u06cc \u0686\u0627\u0644\u0634<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p style=\"font-size:14.5px\">\u0627\u0648\u0644\u06cc\u0646 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0637\u0631\u0627\u062d\u06cc \u06cc\u06a9 \u0633\u0624\u0627\u0644 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a\u060c \u0627\u06cc\u062f\u0647 \u0648 \u0633\u0646\u0627\u0631\u06cc\u0648\u06cc \u0633\u0624\u0627\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0630\u0647\u0646 \u0637\u0631\u0627\u062d \u0634\u06a9\u0644 \u0628\u06af\u06cc\u0631\u062f. \u0641\u0635\u0644 \u00ab\u062a\u0633\u062a\u200c\u0646\u0648\u06cc\u0633\u06cc\u00bb \u062f\u0648\u0631\u0647\u200c\u06cc \u0644\u0627\u0631\u0627\u0648\u0644 \u0634\u0627\u0645\u0644 \u062f\u0648 \u062a\u0645\u0631\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062e\u0644\u0627\u0635\u0647\u200c\u06cc \u0633\u0646\u0627\u0631\u06cc\u0648\u06cc \u0622\u0646\u200c\u0647\u0627 \u0628\u0647 \u0634\u0631\u062d \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\" style=\"font-size:14.5px\"><li>\u062a\u0639\u062f\u0627\u062f\u06cc \u062a\u0633\u062a \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0627\u0648 \u0628\u0627\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0637\u0648\u0631\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u06cc\u0646 \u062a\u0633\u062a\u200c\u0647\u0627 pass \u0634\u0648\u0646\u062f.<\/li><li>\u0633\u0627\u062e\u062a\u0627\u0631 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062a\u0633\u062a \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0627\u0648 \u0628\u0627\u06cc\u062f \u062a\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0637\u0648\u0631\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u062a\u0633\u062a \u0634\u0648\u062f.<\/li><\/ul>\n\n\n\n<p style=\"font-size:14.5px\">\u0633\u0646\u0627\u0631\u06cc\u0648\u06cc \u0627\u0648\u0644 \u06a9\u0647 \u062f\u0631 \u062a\u0645\u0631\u06cc\u0646 \u00ab\u0645\u0633\u062a\u0631 \u062a\u0633\u062a\u0631\u00bb \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0633\u0646\u0627\u0631\u06cc\u0648\u06cc \u0633\u0627\u062f\u0647\u200c\u0627\u06cc \u0627\u0633\u062a \u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0622\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0631\u0627\u062d\u062a \u0627\u0633\u062a. \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u062a\u0627 \u062a\u0639\u062f\u0627\u062f\u06cc \u062a\u0633\u062a \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 \u0648 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645. \u0627\u0645\u0627 \u0633\u0646\u0627\u0631\u06cc\u0648\u06cc \u062f\u0648\u0645 \u0628\u0647\u200c\u0633\u0627\u062f\u06af\u06cc \u0633\u0646\u0627\u0631\u06cc\u0648\u06cc \u0627\u0648\u0644 \u0646\u06cc\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u060c \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u06cc\u0645 \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u062f\u0631\u0633\u062a\u06cc \u0646\u0648\u0634\u062a\u0647 \u0627\u0633\u062a\u061f \u0627\u0635\u0644\u0627\u064b \u0686\u0647 \u062a\u0633\u062a\u200c\u0647\u0627\u06cc\u06cc \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u062a\u0648\u0633\u0637 \u06a9\u0627\u0631\u0628\u0631 \u0646\u0648\u0634\u062a\u0647 \u0634\u0648\u062f\u061f \u062f\u0631 \u0627\u062f\u0627\u0645\u0647\u060c \u0628\u0647 \u0646\u062d\u0648\u0647\u200c\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646 \u0645\u06cc\u200c\u067e\u0631\u062f\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<p style=\"font-size:14.5px\">\u0627\u0632 \u0627\u06cc\u0646 \u0633\u0646\u0627\u0631\u06cc\u0648 \u062f\u0631 \u062a\u0645\u0631\u06cc\u0646 \u00ab\u0628\u06cc\u200c\u0628\u0627\u06af\u00bb \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h2 class=\"has-medium-font-size wp-block-heading\" id=\"\u0633\u0627\u062e\u062a\u0627\u0631-\u062a\u0633\u062a-\u0647\u0627\"><span class=\"ez-toc-section\" id=\"%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1_%D8%AA%D8%B3%D8%AA%E2%80%8C%D9%87%D8%A7\"><\/span><strong>\u0633\u0627\u062e\u062a\u0627\u0631 \u062a\u0633\u062a\u200c\u0647\u0627<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p style=\"font-size:14.5px\">\u06a9\u0627\u0631\u0628\u0631 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u062a\u0639\u062f\u0627\u062f\u06cc feature test \u06cc\u0627 \u0627\u0635\u0637\u0644\u0627\u062d\u0627\u064b <a href=\"https:\/\/en.wikipedia.org\/wiki\/Black-box_testing\" target=\"_blank\" rel=\"noreferrer noopener\">black-box test<\/a> \u0628\u0631\u0627\u06cc \u0628\u062e\u0634 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06cc\u06a9 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u0628\u0646\u0648\u06cc\u0633\u062f. \u0628\u062e\u0634\u06cc \u0627\u0632 \u0633\u0627\u062e\u062a\u0627\u0631 \u0622\u0646 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php\n\nnamespace Tests\\Feature;\n\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\nuse Tests\\TestCase;\n\nclass AuthTest extends TestCase\n{\n    use RefreshDatabase;\n\n    public function test_login_successful()\n    {\n        \/\/ TODO: Implement\n    }\n\n    public function test_login_no_username_provided()\n    {\n        \/\/ TODO: Implement\n    }\n\n    public function test_login_no_password_provided()\n    {\n        \/\/ TODO: Implement\n    }\n\n    public function test_login_invalid_credentials()\n    {\n        \/\/ TODO: Implement\n    }\n}<\/code><\/pre>\n\n\n\n<p style=\"font-size:14.5px\">\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627\u060c \u062d\u062a\u06cc \u0627\u062e\u062a\u06cc\u0627\u0631 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0647\u0645 \u062f\u0633\u062a \u0645\u0627 \u0646\u06cc\u0633\u062a! \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062f\u0631\u062c \u06a9\u0646\u062f \u0648 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f. \u062f\u0631 \u0635\u0648\u0631\u062a \u0633\u0624\u0627\u0644\u060c \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u062a\u0633\u062a\u200c\u0647\u0627 \u0630\u06a9\u0631 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0622\u0646 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\" style=\"font-size:14.5px\"><li><em>\u062a\u0633\u062a <code>test_login_successful<\/code>: \u0627\u06cc\u0646 \u062a\u0633\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0639\u062a\u0628\u0631\u06cc \u0631\u0627 \u062f\u0631 \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/em><\/li><li><em>\u062a\u0633\u062a <code>test_login_no_username_provided<\/code>: \u0627\u06cc\u0646 \u062a\u0633\u062a \u0641\u0642\u0637 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u062f\u0631 \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/em><\/li><li><em>\u062a\u0633\u062a <code>test_login_no_password_provided<\/code>: \u0627\u06cc\u0646 \u062a\u0633\u062a \u0641\u0642\u0637 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06cc\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u062f\u0631 \u0641\u0631\u0645 \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/em><\/li><li><em>\u062a\u0633\u062a <code>test_login_invalid_credentials<\/code>: \u0627\u06cc\u0646 \u062a\u0633\u062a \u06cc\u06a9 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06cc\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u062f\u0631\u0633\u062a \u0631\u0627 \u062f\u0631 \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/em><\/li><\/ul>\n\n\n\n<p style=\"font-size:14.5px\">\u06a9\u0627\u0631\u0628\u0631 \u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u062f \u062f\u0631 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646 \u062a\u0633\u062a\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u062f\u0642\u06cc\u0642\u0627\u064b \u0686\u0647 assertion\u0647\u0627\u06cc\u06cc \u0628\u0646\u0648\u06cc\u0633\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0631\u0641\u062a\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 \u0635\u0648\u0631\u062a \u0633\u0624\u0627\u0644 \u0630\u06a9\u0631 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0622\u0646 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\" style=\"font-size:14.5px\"><li><em>\u0627\u06af\u0631 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648\u0627\u0631\u062f \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0639\u0628\u0627\u0631\u062a <code>__('validation.required', ['attribute' =&gt; 'username'])<\/code> \u062f\u0631 \u067e\u0627\u0633\u062e \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0638\u0627\u0647\u0631 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/em><\/li><li><em>\u0627\u06af\u0631 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0648\u0627\u0631\u062f \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0639\u0628\u0627\u0631\u062a <code>__('validation.required', ['attribute' =&gt; 'password'])<\/code> \u062f\u0631 \u067e\u0627\u0633\u062e \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0638\u0627\u0647\u0631 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/em><\/li><li><em>\u0627\u06af\u0631 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06cc\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u062f\u0631\u0633\u062a \u0628\u0627\u0634\u062f\u060c \u0639\u0628\u0627\u0631\u062a <code>__('auth.failed')<\/code> \u062f\u0631 \u067e\u0627\u0633\u062e \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0638\u0627\u0647\u0631 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/em><\/li><li><em>\u0627\u06af\u0631 \u0648\u0631\u0648\u062f \u0645\u0648\u0641\u0642\u06cc\u062a\u200c\u0622\u0645\u06cc\u0632 \u0628\u0627\u0634\u062f\u060c \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0648\u0627\u0631\u062f \u062e\u0648\u0627\u0647\u062f \u0634\u062f \u0648 \u0639\u0628\u0627\u0631\u062a <code>__('auth.success')<\/code> \u062f\u0631 \u067e\u0627\u0633\u062e \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0638\u0627\u0647\u0631 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/em><\/li><\/ul>\n\n\n\n<p style=\"font-size:14.5px\">\u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0631\u0648\u062a\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u06cc\u0632 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u062a\u0627 \u0628\u062f\u0627\u0646\u062f \u0628\u0647 \u0686\u0647 \u0622\u062f\u0631\u0633\u200c\u0647\u0627\u06cc\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php\n\nuse App\\Http\\Controllers\\AuthController;\n\nRoute::prefix('panel')-&gt;group(function () {\n    Route::get('\/login', [AuthController::class, 'showLoginForm']);\n    Route::post('\/login', [AuthController::class, 'attemptLogin']);\n    Route::get('\/signup', [AuthController::class, 'showSignupForm']);\n    Route::post('\/signup', [AuthController::class, 'attemptSignup']);\n});<\/code><\/pre>\n\n\n\n<p style=\"font-size:14.5px\">\u0628\u0627 \u0628\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u062c\u0632\u0626\u06cc\u0627\u062a\u060c \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062a\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u062f. \u0627\u0645\u0627 \u0686\u06af\u0648\u0646\u0647 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0645\u062a\u0648\u062c\u0647 \u0634\u0648\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u062a\u0633\u062a\u200c\u0647\u0627 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0634\u062f\u0647\u200c\u0627\u0646\u062f\u061f<\/p>\n\n\n\n<h2 class=\"has-medium-font-size wp-block-heading\" id=\"\u062a\u0633\u062a-\u0647\u0627-\u0631\u0627-\u062a\u0633\u062a-\u06a9\u0646\u06cc\u0645\"><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B3%D8%AA%E2%80%8C%D9%87%D8%A7_%D8%B1%D8%A7_%D8%AA%D8%B3%D8%AA_%DA%A9%D9%86%DB%8C%D9%85\"><\/span><strong>\u062a\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u062a\u0633\u062a \u06a9\u0646\u06cc\u0645!<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p style=\"font-size:14.5px\">\u0628\u0631\u0627\u06cc \u062f\u0627\u0648\u0631\u06cc \u0633\u0624\u0627\u0644\u0627\u062a\u060c \u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u0628\u0627\u06cc\u062f \u0645\u0648\u0627\u0631\u062f\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0631\u0627 \u062a\u0633\u062a \u06a9\u0631\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0647\u0645 \u0628\u0627\u06cc\u062f \u062a\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u062a\u0633\u062a \u06a9\u0631\u062f. \u0634\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0631\u0627\u0647\u200c\u062d\u0644 \u06cc\u06a9 bad practice \u0645\u062d\u0633\u0648\u0628 \u0634\u0648\u062f\u060c \u0627\u0645\u0627 \u0686\u0627\u0631\u0647\u200c\u0627\u06cc \u0646\u06cc\u0633\u062a! \u0647\u0631 \u0631\u0648\u0634\u06cc \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644\u062a \u06a9\u0644\u06cc \u06cc\u06a9 \u0631\u0648\u0634 \u062e\u0648\u0628 \u0645\u062d\u0633\u0648\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 \u0628\u0639\u0636\u06cc \u0634\u0631\u0627\u06cc\u0637 \u0628\u062f\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0645\u0645\u06a9\u0646 \u0628\u0627\u0634\u062f. \u0628\u0631\u0639\u06a9\u0633 \u0627\u06cc\u0646 \u0642\u0636\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0631\u0648\u0634\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u200c\u0647\u0627 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc\u06cc \u0628\u062f \u062e\u0637\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0646\u06cc\u0632 \u0635\u0627\u062f\u0642 \u0627\u0633\u062a. \u0628\u06af\u0630\u0631\u06cc\u0645\u061b \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646 \u0631\u0648\u0634 \u062c\u0630\u0627\u0628 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<h2 class=\"has-medium-font-size wp-block-heading\" id=\"\u0627\u06cc\u062c\u0627\u062f-\u067e\u06cc\u0627\u062f\u0647-\u0633\u0627\u0632\u06cc-\u0647\u0627\u06cc-\u0645\u062e\u062a\u0644\u0641-\u0627\u0632-\u0628\u0631\u0646\u0627\u0645\u0647\"><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D9%BE%DB%8C%D8%A7%D8%AF%D9%87%E2%80%8C%D8%B3%D8%A7%D8%B2%DB%8C%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%85%D8%AE%D8%AA%D9%84%D9%81_%D8%A7%D8%B2_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87\"><\/span><strong>\u0627\u06cc\u062c\u0627\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p style=\"font-size:14.5px\">\u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u06a9\u0627\u0645\u0644 \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u060c \u0628\u0627\u06cc\u062f \u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0622\u0646\u200c\u0647\u0627 \u0628\u062e\u0634\u06cc \u0627\u0632 \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627\u06cc\u062f pass \u0634\u0648\u0646\u062f \u0648 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f fail \u0634\u0648\u0646\u062f.\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062a\u0641\u0627\u0648\u062a \u062f\u0627\u0631\u0646\u062f \u062f\u0631 \u0642\u0627\u0644\u0628 stub \u062f\u0631\u200c\u0622\u0645\u062f\u0647\u200c\u0627\u0646\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc\u06cc \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c stub \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u0646\u062a\u0631\u0644\u0631 <code>AuthController<\/code> \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Support\\Facades\\Auth;\n\nuse App\\Http\\Requests\\LoginRequest;\nuse App\\Models\\User;\n\nclass AuthController extends Controller\n{\n    public function attemptLogin(LoginRequest $request)\n    {\n        {{ attempt_login_body }}\n    }\n}<\/code><\/pre>\n\n\n\n<p style=\"font-size:14.5px\">stub \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u0644\u0627\u0633 <code>LoginRequest<\/code> \u0646\u06cc\u0632 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php\n\nnamespace App\\Http\\Requests;\n\nuse Illuminate\\Contracts\\Validation\\Validator;\nuse Illuminate\\Foundation\\Http\\FormRequest;\nuse Illuminate\\Http\\Exceptions\\HttpResponseException;\n\nclass LoginRequest extends FormRequest\n{\n    public function authorize()\n    {\n        return true;\n    }\n\n    public function rules()\n    {\n        {{ rules }}\n    }\n\n    protected function failedValidation(Validator $validator)\n    {\n        $errors = $validator-&gt;errors();\n    \n        $response = response()-&gt;json($errors-&gt;messages(), 422);\n    \n        throw new HttpResponseException($response);\n    }\n}<\/code><\/pre>\n\n\n\n<p style=\"font-size:14.5px\">\u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0648 <code>FormRequest<\/code> \u062f\u0631 \u062a\u0639\u062f\u0627\u062f\u06cc \u0641\u0627\u06cc\u0644 \u0645\u062a\u0646\u06cc \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0648 \u0647\u0645\u0647\u200c\u06cc \u062a\u0631\u06a9\u06cc\u0628\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u200c\u0647\u0627 \u062a\u0648\u0633\u0637 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u06a9\u0648\u0686\u06a9 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u062f\u060c \u0627\u06af\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0631\u0648\u06cc \u0646\u062a\u06cc\u062c\u0647\u200c\u06cc n \u062a\u0633\u062a \u062a\u0623\u062b\u06cc\u0631\u06af\u0630\u0627\u0631 \u0628\u0627\u0634\u062f\u060c \u0645\u062d\u062a\u0648\u0627\u06cc \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f 2n \u062d\u0627\u0644\u062a \u0645\u062e\u062a\u0644\u0641 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f (\u0647\u0631 \u062a\u0633\u062a \u062f\u0648 \u062d\u0627\u0644\u062a \u062f\u0627\u0631\u062f\u061b \u06cc\u0627 pass \u0645\u06cc\u200c\u0634\u0648\u062f \u06cc\u0627 fail). \u062f\u0631 \u0648\u0627\u0642\u0639\u060c \u0645\u062a\u063a\u06cc\u0631 <code>attempt_login_body<\/code> \u0634\u0627\u0645\u0644 \u0627\u06cc\u0646 \u062a\u0639\u062f\u0627\u062f \u062d\u0627\u0644\u062a \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0622\u0633\u0627\u0646 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u200c\u0647\u0627\u060c <code>attempt_login_body<\/code> \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0646\u0637\u0642\u0634 \u0628\u0647 \u062f\u0648 \u0628\u062e\u0634 \u062a\u0642\u0633\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u062e\u0634 \u0627\u0648\u0644 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0648 \u0628\u062e\u0634 \u062f\u0648\u0645 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u0631\u0633\u0627\u0644 \u067e\u0627\u0633\u062e \u0627\u0633\u062a. \u0646\u0645\u0648\u0646\u0647\u200c\u06cc \u0635\u062d\u06cc\u062d \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u062f\u0648 \u0628\u062e\u0634 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">$success = Auth::attempt([\n    'username' =&gt; $request-&gt;input('username_or_email'),\n    'password' =&gt; $request-&gt;input('password')\n]);<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">return response($success ? __('auth.success') : __('auth.failed'));<\/code><\/pre>\n\n\n\n<p style=\"font-size:14.5px\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0628\u0631\u0627\u06cc \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u062f\u0648 \u0628\u062e\u0634 \u0641\u0648\u0642\u060c \u062f\u0648 \u062a\u06a9\u0647 \u06a9\u062f \u062f\u0631\u0633\u062a \u0648 \u0646\u0627\u062f\u0631\u0633\u062a \u0646\u0648\u0634\u062a \u0648 \u0628\u0627 \u0646\u0648\u0634\u062a\u0646 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0633\u0627\u062f\u0647\u060c \u0647\u0645\u0647\u200c\u06cc \u062a\u0631\u06a9\u06cc\u0628\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u200c\u0647\u0627 \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u06a9\u0631\u062f. \u0647\u0631 \u062a\u06a9\u0647 \u06a9\u062f \u062f\u0631 \u0642\u0627\u0644\u0628 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0648 \u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u0646\u0627\u0645 \u0622\u0646\u200c\u0647\u0627\u060c \u067e\u0633\u0648\u0646\u062f <code>_true<\/code> \u06cc\u0627<code> _false<\/code> \u0622\u0645\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u06cc\u0627\u0646\u06af\u0631 \u062f\u0631\u0633\u062a \u06cc\u0627 \u0646\u0627\u062f\u0631\u0633\u062a \u0628\u0648\u062f\u0646 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<p style=\"font-size:14.5px\">\u0627\u0632 \u0622\u0646\u200c\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u062a\u0639\u062f\u0627\u062f \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u200c\u0647\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0632\u06cc\u0627\u062f \u0627\u0633\u062a \u0648 \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0632\u0645\u0627\u0646\u200c\u0628\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u062a\u0646\u0647\u0627 \u062a\u0639\u062f\u0627\u062f\u06cc \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u0631\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f\u060c \u0627\u0645\u0627 \u0627\u0645\u062a\u06cc\u0627\u0632 \u06a9\u0627\u0645\u0644 \u0627\u06cc\u0646 \u0633\u0624\u0627\u0644 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u062f (\u0627\u0644\u0628\u062a\u0647 \u0627\u062d\u062a\u0645\u0627\u0644 \u0648\u0642\u0648\u0639 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0645 \u0627\u0633\u062a). \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u06cc\u06a9 trade-off \u0628\u06cc\u0646 \u062f\u0642\u062a \u062a\u0633\u062a\u200c\u0647\u0627 \u0648 \u0633\u0631\u0639\u062a \u0627\u062c\u0631\u0627\u06cc \u0622\u0646\u200c\u0647\u0627 \u0627\u0633\u062a.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/quera.ir\/blog\/wp-content\/uploads\/2021\/10\/\u062c\u0627\u0645\u067e-\u06a9\u0648\u0626\u0631\u0627-1.jpg\" alt=\"\" class=\"wp-image-1085\" width=\"500\" srcset=\"https:\/\/quera.org\/blog\/wp-content\/uploads\/2021\/10\/\u062c\u0627\u0645\u067e-\u06a9\u0648\u0626\u0631\u0627-1.jpg 625w, https:\/\/quera.org\/blog\/wp-content\/uploads\/2021\/10\/\u062c\u0627\u0645\u067e-\u06a9\u0648\u0626\u0631\u0627-1-300x253.jpg 300w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/figure><\/div>\n\n\n\n<p style=\"font-size:14.5px\">\u0627\u0644\u0628\u062a\u0647 \u0646\u0633\u0628\u062a \u062f\u0642\u062a \u062a\u0633\u062a\u200c\u0647\u0627 \u0628\u0647 \u062a\u0639\u062f\u0627\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627 \u062e\u0637\u06cc \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<p style=\"font-size:14.5px\">\u062d\u0627\u0644\u060c \u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u062a\u0633\u062a\u200c\u0647\u0627 \u062f\u0631 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627 pass \u0645\u06cc\u200c\u0634\u0648\u062f \u06cc\u0627 fail. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u067e\u0627\u0633\u062e \u0635\u062d\u06cc\u062d \u0633\u0624\u0627\u0644 (\u06a9\u0647 \u0647\u0645\u0627\u0646 \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u06a9\u0644\u0627\u0633 AuthTest \u0627\u0633\u062a) \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a \u062a\u0627 \u0628\u062a\u0648\u0627\u0646 \u0646\u062a\u06cc\u062c\u0647\u200c\u06cc \u0647\u0631 \u062a\u0633\u062a \u0631\u0627 \u0628\u0647 \u0627\u0632\u0627\u06cc \u0647\u0631 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f. \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647 \u06a9\u0647 \u0646\u062a\u06cc\u062c\u0647\u200c\u06cc \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0642\u0627\u0644\u0628 JSON \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">{\n    \"test_login_successful\": true,\n    \"test_login_no_username_provided\": true,\n    \"test_login_no_password_provided\": true,\n    \"test_login_invalid_credentials\": true\n}<\/code><\/pre>\n\n\n\n<p style=\"font-size:14.5px\">\u0627\u06cc\u0646 \u062e\u0631\u0648\u062c\u06cc \u0628\u0647 \u0627\u0632\u0627\u06cc \u0647\u0631 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u0648 \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06a9\u0646\u0648\u0646 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u06a9\u0631\u062f\u0646 \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h2 class=\"has-medium-font-size wp-block-heading\" id=\"\u0627\u062c\u0631\u0627\u06cc-\u062a\u0633\u062a-\u0647\u0627\u06cc-\u06a9\u0627\u0631\u0628\u0631-\u062f\u0631-phpunit\"><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C_%D8%AA%D8%B3%D8%AA%E2%80%8C%D9%87%D8%A7%DB%8C_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1_%D8%AF%D8%B1_PHPUnit\"><\/span><strong>\u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 PHPUnit<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p style=\"font-size:14.5px\">\u0633\u06cc\u0633\u062a\u0645 \u062f\u0627\u0648\u0631\u06cc \u0644\u0627\u0631\u0627\u0648\u0644 \u062f\u0631 \u06a9\u0648\u0626\u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u062a\u0633\u062a\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u06a9\u0627\u0646\u0641\u06cc\u06af \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0641\u0627\u06cc\u0644 <code>phpunit.xml<\/code> \u0647\u0633\u062a\u0646\u062f \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0634\u0631\u0648\u0639 \u0641\u0631\u0627\u06cc\u0646\u062f \u062a\u0633\u062a\u060c \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u06cc\u0631\u0648\u0646 \u0627\u0632 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc `tests` \u0642\u0631\u0627\u0631 \u062f\u0627\u062f. \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u060c \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u062a\u0627 \u0641\u0627\u06cc\u0644 \u062a\u0633\u062a \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062a\u0633\u062a\u200c\u0647\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f \u0648 \u0647\u0645\u0627\u0646 \u062f\u0633\u062a\u0648\u0631 \u0647\u0645\u06cc\u0634\u06af\u06cc <code>php artisan test<\/code> \u062f\u0631 \u062a\u0633\u062a\u200c\u0647\u0627 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f. \u0627\u0644\u0628\u062a\u0647 \u0646\u0648\u0639 \u062e\u0631\u0648\u062c\u06cc \u062a\u0633\u062a\u200c\u0647\u0627 \u0645\u0647\u0645 \u0627\u0633\u062a. \u062e\u0631\u0648\u062c\u06cc\u200c\u0627\u06cc \u06a9\u0647 \u0647\u0645\u06cc\u0634\u0647 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0628\u0627 \u0622\u0646 \u0633\u0631\u0648\u06a9\u0627\u0631 \u062f\u0627\u0631\u06cc\u0645\u060c \u062e\u0631\u0648\u062c\u06cc\u200c\u0627\u06cc \u0646\u06cc\u0633\u062a \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u062a\u0648\u0627\u0646\u062f \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc parse \u06a9\u0646\u062f. \u0645\u062a\u0623\u0633\u0641\u0627\u0646\u0647 PHPUnit \u0627\u0645\u06a9\u0627\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062e\u0631\u0648\u062c\u06cc JSON \u0631\u0627 \u0646\u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 \u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647 \u0627\u0632 \u0641\u0631\u0645\u062a\u200c\u0647\u0627\u06cc\u06cc \u0646\u0638\u06cc\u0631 XML \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0627\u0645\u06a9\u0627\u0646\u06cc \u0628\u0627 \u0646\u0627\u0645 TestDox \u062f\u0631 PHPUnit \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u062e\u0631\u0648\u062c\u06cc \u062a\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">$ phpunit --testdox BankAccountTest.php\nPHPUnit 9.5.0 by Sebastian Bergmann and contributors.\n\nBankAccount\n \u2714 Balance is initially zero\n \u2714 Balance cannot become negative<\/code><\/pre>\n\n\n\n<p style=\"font-size:14.5px\">\u0627\u06af\u0631\u0686\u0647 \u0627\u06cc\u0646 \u062e\u0631\u0648\u062c\u06cc \u0647\u0645\u0627\u0646\u0646\u062f \u062e\u0631\u0648\u062c\u06cc XML \u0634\u0627\u0645\u0644 \u062a\u0645\u0627\u0645 \u062c\u0632\u0626\u06cc\u0627\u062a \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u200c\u0647\u0627 \u0646\u06cc\u0633\u062a\u060c \u0627\u0645\u0627 \u0628\u0647\u200c\u0631\u0627\u062d\u062a\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0622\u0646 \u0631\u0627 parse \u06a9\u0631\u062f.<\/p>\n\n\n\n<p style=\"font-size:14.5px\">\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u200c\u0647\u0627\u060c \u0628\u0647\u200c\u062c\u0627\u06cc <code>shell_exec<\/code> \u06cc\u0627 <code>exec<\/code> \u06a9\u0647 \u0638\u0627\u0647\u0631 \u0632\u06cc\u0628\u0627\u06cc\u06cc \u0646\u062f\u0627\u0631\u0646\u062f\u060c \u0627\u0632 \u06a9\u0644\u0627\u0633 <code>Symfony\\Component\\Process\\Process<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062a\u0648\u0633\u0637 \u0645\u062a\u062f <code>getTestResults<\/code> \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">private static function getTestResults(): array\n{\n    $process = new Process([\n        'php',\n        'artisan',\n        'test',\n        '--order-by', 'random',\n        '--testdox-text', self::$testLogFilepath,\n        self::$testFilepath\n    ]);\n    $process-&gt;run();\n    preg_match_all('\/ \\[(.)] (.*)\/', file_get_contents(self::$testLogFilepath), $matches);\n    $result = [];\n    for ($i = 0; $i &lt; count($matches[0]); $i++) {\n        $testName = 'test_'.Str::snake($matches[2][$i]);\n        $result[$testName] = $matches[1][$i] == 'x';\n    }\n\n    return $result;\n}<\/code><\/pre>\n\n\n\n<p style=\"font-size:14.5px\">\u0627\u0632 \u0641\u0644\u06af <code>--order-by random<\/code> \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u062a\u0627 \u06a9\u0627\u0631\u0628\u0631 \u062a\u0627 \u062d\u062f\u06cc \u0645\u062c\u0628\u0648\u0631 \u0628\u0647 \u0631\u0639\u0627\u06cc\u062a \u0627\u0635\u0644 Independent \u0627\u0632 \u0627\u0635\u0648\u0644 F.I.R.S.T \u0634\u0648\u062f.<\/p>\n\n\n\n<p style=\"font-size:14.5px\">\u0637\u0628\u0642 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u060c \u0627\u0648\u0644\u06cc\u0646 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0647\u0645\u0627\u0646 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0647\u0645\u0647\u200c\u06cc \u062a\u0633\u062a\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0627\u0632\u0627\u06cc \u0622\u0646 pass \u0634\u0648\u0646\u062f. \u067e\u06cc\u0634 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u200c\u0647\u0627\u060c \u06cc\u06a9 mapping \u0627\u0632 \u0646\u0627\u0645 \u062a\u0633\u062a\u200c\u0647\u0627 \u0628\u0647 \u0646\u062a\u06cc\u062c\u0647\u200c\u06cc \u0627\u062c\u0631\u0627\u06cc \u0622\u0646\u200c\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">public static function setUpBeforeClass(): void\n{\n    self::$tests = json_decode(file_get_contents(__DIR__.'\/'.self::$codesDirname.'\/1\/expected_results.json'), true);\n    if (!file_exists(self::$testFilepath)) {\n        copy(self::$submissionFilepath, self::$testFilepath);\n    }\n    self::runTests();\n}<\/code><\/pre>\n\n\n\n<p style=\"font-size:14.5px\">\u0645\u062a\u062f <code>runTests<\/code> \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u067e\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u062a\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0646\u062a\u06cc\u062c\u0647 \u0631\u0627 \u0628\u0627 \u0646\u062a\u06cc\u062c\u0647\u200c\u06cc \u0645\u0648\u0631\u062f\u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06af\u0631 \u0646\u062a\u06cc\u062c\u0647\u200c\u06cc \u062a\u0633\u062a\u200c\u0647\u0627 \u0628\u0627 \u0646\u062a\u06cc\u062c\u0647\u200c\u06cc \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0627\u0634\u062f\u060c \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u062f\u0631 map \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u062a\u0633\u062a\u200c\u0647\u0627 \u0628\u0647 <code>false<\/code> \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">private static function runTests(): void\n{\n    $sampleDirs = glob(__DIR__.'\/'.self::$codesDirname.'\/*');\n    shuffle($sampleDirs);\n    foreach ($sampleDirs as $sampleDir) {\n        foreach (self::$fileMappings as $srcFile =&gt; $destDir) {\n            copy($sampleDir.'\/'.$srcFile, self::BASE_PATH.'\/'.$destDir.'\/'.$srcFile);\n        }\n        $expectedResults = json_decode(file_get_contents($sampleDir.'\/expected_results.json'), true);\n        $actualResults = self::getTestResults();\n        foreach ($expectedResults as $testName =&gt; $expectedResult) {\n            if (!array_key_exists($testName, $actualResults)\n                || $expectedResult != $actualResults[$testName]) {\n                self::$tests[$testName] = false;\n            }\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<p style=\"font-size:14.5px\">\u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u062a\u0639\u062f\u0627\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u060c \u0646\u0648\u0628\u062a \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u062f\u0627\u0648\u0631\u06cc \u0645\u06cc\u200c\u0631\u0633\u062f. \u0647\u0645\u0647\u200c\u06cc \u0627\u06cc\u0646 \u062a\u0633\u062a\u200c\u0647\u0627 \u0628\u062f\u0646\u0647\u200c\u06cc \u06cc\u06a9\u0633\u0627\u0646\u06cc \u062f\u0627\u0631\u0646\u062f \u0648 \u0635\u0631\u0641\u0627\u064b \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u062a\u0633\u062a \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u062f\u0631 \u0647\u0645\u0647\u200c\u06cc \u062d\u0627\u0644\u062a\u200c\u0647\u0627 \u0646\u062a\u06cc\u062c\u0647\u200c\u06cc \u062f\u0631\u0633\u062a\u06cc \u062f\u0627\u0634\u062a\u0647 \u06cc\u0627 \u0646\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">public function test_login_successful()\n{\n    $this-&gt;assertTrue(self::$tests[__FUNCTION__]);\n}\n\npublic function test_login_no_username_or_email_provided()\n{\n    $this-&gt;assertTrue(self::$tests[__FUNCTION__]);\n}\n\npublic function test_login_no_password_provided()\n{\n    $this-&gt;assertTrue(self::$tests[__FUNCTION__]);\n}\n\npublic function test_login_invalid_credentials()\n{\n    $this-&gt;assertTrue(self::$tests[__FUNCTION__]);\n}<\/code><\/pre>\n\n\n\n<p style=\"font-size:14.5px\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628\u060c \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062a\u0633\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u06a9\u0627\u0631\u0628\u0631 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u06a9\u062f\u0627\u0645 \u062a\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<p style=\"font-size:14.5px\">\u0628\u0631\u0627\u06cc \u0628\u0647\u0628\u0648\u062f \u062a\u0633\u062a\u200c\u0647\u0627\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0646\u0648\u0639 \u062e\u0631\u0648\u062c\u06cc \u062a\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 XML \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f \u0648 \u067e\u06cc\u0627\u0645 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 assertion\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062a\u0633\u062a\u200c\u0647\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646 \u067e\u06cc\u0627\u0645 \u062f\u0631 <code>assertTrue<\/code>\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u062f\u0627\u0648\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646 \u062a\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0631\u0627\u062d\u062a\u200c\u062a\u0631 \u062f\u06cc\u0628\u0627\u06af \u06a9\u0631\u062f.<\/p>\n\n\n\n<h2 class=\"has-medium-font-size wp-block-heading\" id=\"\u062c\u0645\u0639-\u0628\u0646\u062f\u06cc\"><span class=\"ez-toc-section\" id=\"%D8%AC%D9%85%D8%B9%E2%80%8C%D8%A8%D9%86%D8%AF%DB%8C\"><\/span><strong>\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p style=\"font-size:14.5px\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0639\u062c\u06cc\u0628\u200c\u0648\u200c\u063a\u0631\u06cc\u0628 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u06af\u0631\u0686\u0647 \u0647\u0645\u06cc\u0634\u0647 \u062c\u0627\u0644\u0628 \u0628\u0647 \u0646\u0638\u0631 \u0646\u0645\u06cc\u200c\u0631\u0633\u062f\u060c \u0627\u0645\u0627 \u06af\u0627\u0647\u06cc \u0627\u0648\u0642\u0627\u062a \u062a\u0646\u0647\u0627 \u0631\u0627\u0647 \u0645\u0645\u06a9\u0646 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627 \u0627\u0633\u062a \u0648 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0627\u062c\u062a\u0646\u0627\u0628 \u0646\u0645\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0628\u062e\u0634\u06cc \u0627\u0632 \u062c\u0632\u0626\u06cc\u0627\u062a \u062a\u0633\u062a \u06a9\u0631\u062f\u0646 \u062a\u0633\u062a\u200c\u0647\u0627 \u067e\u0631\u062f\u0627\u062e\u062a\u0647 \u0634\u062f\u060c \u0627\u0645\u0627 \u0628\u0627 \u062d\u0630\u0641 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc\u200c\u0647\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0644\u0627\u06cc\u0647 \u062f\u0631 \u062a\u0633\u062a\u200c\u0647\u0627\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0638\u0627\u0647\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u200c\u062d\u0644 \u0631\u0627 \u0628\u0647 \u0632\u06cc\u0628\u0627\u062a\u0631\u06cc\u0646 \u0634\u06a9\u0644 \u0645\u0645\u06a9\u0646 \u062f\u0631\u200c\u0622\u0648\u0631\u062f. \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u060c \u062a\u0646\u0647\u0627 \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u06a9\u0648\u0686\u06a9 \u0648 \u0633\u0627\u062f\u0647 \u0627\u0632 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc\u06cc \u0628\u0648\u062f \u06a9\u0647 \u062f\u0631 \u06a9\u0648\u0626\u0631\u0627 \u0628\u0627 \u0622\u0646 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f\u06cc\u0645. \u062f\u0631 \u0622\u06cc\u0646\u062f\u0647\u060c \u062f\u0627\u0633\u062a\u0627\u0646 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0686\u0627\u0644\u0634\u200c\u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647\u200c\u062a\u0631\u06cc \u0631\u0627 \u0646\u06cc\u0632 \u0628\u0627 \u0634\u0645\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06af\u0630\u0627\u0634\u062a.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u062c\u0646\u06af\u0648\u00bb \u0648 \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u0644\u0627\u0631\u0627\u0648\u0644\u00bb \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634 \u062c\u0646\u06af\u0648 \u0648 \u0644\u0627\u0631\u0627\u0648\u0644 \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc&#8230;<\/p>\n","protected":false},"author":8,"featured_media":325,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46,93,50],"tags":[],"class_list":["post-61","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developer","category-our-stories-dev","category-quera-developer"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc \u062a\u0633\u062a\u200c\u0646\u0648\u06cc\u0633\u06cc \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e\u00bb \u06a9\u0648\u0626\u0631\u0627 \u06a9\u0627\u0644\u062c \u0631\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0627\u0648\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f - \u06a9\u0648\u0626\u0631\u0627\u200c\u0628\u0644\u0627\u06af<\/title>\n<meta name=\"description\" content=\"\u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u062c\u0646\u06af\u0648\u00bb \u0648 \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u0644\u0627\u0631\u0627\u0648\u0644\u00bb \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634 \u062c\u0646\u06af\u0648 \u0648 \u0644\u0627\u0631\u0627\u0648\u0644 \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0634\u0627\u0645\u0644 \u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/quera.org\/blog\/quera-jump-courses\/\" \/>\n<meta property=\"og:locale\" content=\"fa_IR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc \u062a\u0633\u062a\u200c\u0646\u0648\u06cc\u0633\u06cc \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e\u00bb \u06a9\u0648\u0626\u0631\u0627 \u06a9\u0627\u0644\u062c \u0631\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0627\u0648\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f - \u06a9\u0648\u0626\u0631\u0627\u200c\u0628\u0644\u0627\u06af\" \/>\n<meta property=\"og:description\" content=\"\u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u062c\u0646\u06af\u0648\u00bb \u0648 \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u0644\u0627\u0631\u0627\u0648\u0644\u00bb \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634 \u062c\u0646\u06af\u0648 \u0648 \u0644\u0627\u0631\u0627\u0648\u0644 \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0634\u0627\u0645\u0644 \u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc\" \/>\n<meta property=\"og:url\" content=\"https:\/\/quera.org\/blog\/quera-jump-courses\/\" \/>\n<meta property=\"og:site_name\" content=\"\u06a9\u0648\u0626\u0631\u0627\u200c\u0628\u0644\u0627\u06af\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-01T09:26:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-26T14:36:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/quera.org\/blog\/wp-content\/uploads\/2021\/10\/programming-code.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1016\" \/>\n\t<meta property=\"og:image:height\" content=\"677\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"\u0646\u06cc\u0645\u0627 \u062d\u06cc\u062f\u0631\u06cc\u200c\u0646\u0633\u0628\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0646\u0648\u0634\u062a\u0647\u200c\u0634\u062f\u0647 \u0628\u062f\u0633\u062a\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u0646\u06cc\u0645\u0627 \u062d\u06cc\u062f\u0631\u06cc\u200c\u0646\u0633\u0628\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u0632\u0645\u0627\u0646 \u062a\u0642\u0631\u06cc\u0628\u06cc \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 \u062f\u0642\u06cc\u0642\u0647\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\/\/quera.org\/blog\/quera-jump-courses\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/quera.org\/blog\/quera-jump-courses\/\"},\"author\":{\"name\":\"\u0646\u06cc\u0645\u0627 \u062d\u06cc\u062f\u0631\u06cc\u200c\u0646\u0633\u0628\",\"@id\":\"https:\/\/quera.org\/blog\/#\/schema\/person\/e85eb06ea3885447f0168787a447c556\"},\"headline\":\"\u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc \u062a\u0633\u062a\u200c\u0646\u0648\u06cc\u0633\u06cc \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e\u00bb \u06a9\u0648\u0626\u0631\u0627 \u06a9\u0627\u0644\u062c \u0631\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0627\u0648\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f\",\"datePublished\":\"2021-10-01T09:26:55+00:00\",\"dateModified\":\"2022-01-26T14:36:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/quera.org\/blog\/quera-jump-courses\/\"},\"wordCount\":43,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/quera.org\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/quera.org\/blog\/quera-jump-courses\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/quera.org\/blog\/wp-content\/uploads\/2021\/10\/programming-code.jpg\",\"articleSection\":[\"\u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647\",\"\u062f\u0627\u0633\u062a\u0627\u0646\u200c\u0647\u0627\u06cc \u06a9\u0648\u0626\u0631\u0627\",\"\u0628\u0627 \u06a9\u0648\u0626\u0631\u0627 | \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647\"],\"inLanguage\":\"fa-IR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/quera.org\/blog\/quera-jump-courses\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/quera.org\/blog\/quera-jump-courses\/\",\"url\":\"https:\/\/quera.org\/blog\/quera-jump-courses\/\",\"name\":\"\u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc \u062a\u0633\u062a\u200c\u0646\u0648\u06cc\u0633\u06cc \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e\u00bb \u06a9\u0648\u0626\u0631\u0627 \u06a9\u0627\u0644\u062c \u0631\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0627\u0648\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f - \u06a9\u0648\u0626\u0631\u0627\u200c\u0628\u0644\u0627\u06af\",\"isPartOf\":{\"@id\":\"https:\/\/quera.org\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/quera.org\/blog\/quera-jump-courses\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/quera.org\/blog\/quera-jump-courses\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/quera.org\/blog\/wp-content\/uploads\/2021\/10\/programming-code.jpg\",\"datePublished\":\"2021-10-01T09:26:55+00:00\",\"dateModified\":\"2022-01-26T14:36:20+00:00\",\"description\":\"\u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u062c\u0646\u06af\u0648\u00bb \u0648 \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u0644\u0627\u0631\u0627\u0648\u0644\u00bb \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634 \u062c\u0646\u06af\u0648 \u0648 \u0644\u0627\u0631\u0627\u0648\u0644 \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0634\u0627\u0645\u0644 \u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc\",\"breadcrumb\":{\"@id\":\"https:\/\/quera.org\/blog\/quera-jump-courses\/#breadcrumb\"},\"inLanguage\":\"fa-IR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/quera.org\/blog\/quera-jump-courses\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fa-IR\",\"@id\":\"https:\/\/quera.org\/blog\/quera-jump-courses\/#primaryimage\",\"url\":\"https:\/\/quera.org\/blog\/wp-content\/uploads\/2021\/10\/programming-code.jpg\",\"contentUrl\":\"https:\/\/quera.org\/blog\/wp-content\/uploads\/2021\/10\/programming-code.jpg\",\"width\":1016,\"height\":677},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/quera.org\/blog\/quera-jump-courses\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u062e\u0627\u0646\u0647\",\"item\":\"https:\/\/quera.org\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647\",\"item\":\"https:\/\/quera.org\/blog\/category\/developer\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u0628\u0627 \u06a9\u0648\u0626\u0631\u0627 | \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647\",\"item\":\"https:\/\/quera.org\/blog\/category\/developer\/quera-developer\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"\u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc \u062a\u0633\u062a\u200c\u0646\u0648\u06cc\u0633\u06cc \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e\u00bb \u06a9\u0648\u0626\u0631\u0627 \u06a9\u0627\u0644\u062c \u0631\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0627\u0648\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/quera.org\/blog\/#website\",\"url\":\"https:\/\/quera.org\/blog\/\",\"name\":\"\u06a9\u0648\u0626\u0631\u0627\u200c\u0628\u0644\u0627\u06af\",\"description\":\"\u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u062f\u0631\u0628\u0627\u0631\u0647 \u062f\u0646\u06cc\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc\",\"publisher\":{\"@id\":\"https:\/\/quera.org\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/quera.org\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fa-IR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/quera.org\/blog\/#organization\",\"name\":\"\u06a9\u0648\u0626\u0631\u0627\",\"url\":\"https:\/\/quera.org\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fa-IR\",\"@id\":\"https:\/\/quera.org\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/quera.org\/blog\/wp-content\/uploads\/2022\/09\/logo-quera22-e1574766184574.png\",\"contentUrl\":\"https:\/\/quera.org\/blog\/wp-content\/uploads\/2022\/09\/logo-quera22-e1574766184574.png\",\"width\":300,\"height\":300,\"caption\":\"\u06a9\u0648\u0626\u0631\u0627\"},\"image\":{\"@id\":\"https:\/\/quera.org\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.instagram.com\/quera.ir\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/quera.org\/blog\/#\/schema\/person\/e85eb06ea3885447f0168787a447c556\",\"name\":\"\u0646\u06cc\u0645\u0627 \u062d\u06cc\u062f\u0631\u06cc\u200c\u0646\u0633\u0628\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fa-IR\",\"@id\":\"https:\/\/quera.org\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4d60a336407aef45ca5007d9780b77b7db4c09d412ec2351fe8bb910f4f5971e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4d60a336407aef45ca5007d9780b77b7db4c09d412ec2351fe8bb910f4f5971e?s=96&d=mm&r=g\",\"caption\":\"\u0646\u06cc\u0645\u0627 \u062d\u06cc\u062f\u0631\u06cc\u200c\u0646\u0633\u0628\"},\"sameAs\":[\"https:\/\/nimah79.ir\/\",\"https:\/\/www.linkedin.com\/in\/nimah79\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc \u062a\u0633\u062a\u200c\u0646\u0648\u06cc\u0633\u06cc \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e\u00bb \u06a9\u0648\u0626\u0631\u0627 \u06a9\u0627\u0644\u062c \u0631\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0627\u0648\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f - \u06a9\u0648\u0626\u0631\u0627\u200c\u0628\u0644\u0627\u06af","description":"\u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u062c\u0646\u06af\u0648\u00bb \u0648 \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u0644\u0627\u0631\u0627\u0648\u0644\u00bb \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634 \u062c\u0646\u06af\u0648 \u0648 \u0644\u0627\u0631\u0627\u0648\u0644 \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0634\u0627\u0645\u0644 \u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/quera.org\/blog\/quera-jump-courses\/","og_locale":"fa_IR","og_type":"article","og_title":"\u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc \u062a\u0633\u062a\u200c\u0646\u0648\u06cc\u0633\u06cc \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e\u00bb \u06a9\u0648\u0626\u0631\u0627 \u06a9\u0627\u0644\u062c \u0631\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0627\u0648\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f - \u06a9\u0648\u0626\u0631\u0627\u200c\u0628\u0644\u0627\u06af","og_description":"\u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u062c\u0646\u06af\u0648\u00bb \u0648 \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u0644\u0627\u0631\u0627\u0648\u0644\u00bb \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634 \u062c\u0646\u06af\u0648 \u0648 \u0644\u0627\u0631\u0627\u0648\u0644 \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0634\u0627\u0645\u0644 \u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc","og_url":"https:\/\/quera.org\/blog\/quera-jump-courses\/","og_site_name":"\u06a9\u0648\u0626\u0631\u0627\u200c\u0628\u0644\u0627\u06af","article_published_time":"2021-10-01T09:26:55+00:00","article_modified_time":"2022-01-26T14:36:20+00:00","og_image":[{"width":1016,"height":677,"url":"https:\/\/quera.org\/blog\/wp-content\/uploads\/2021\/10\/programming-code.jpg","type":"image\/jpeg"}],"author":"\u0646\u06cc\u0645\u0627 \u062d\u06cc\u062f\u0631\u06cc\u200c\u0646\u0633\u0628","twitter_card":"summary_large_image","twitter_misc":{"\u0646\u0648\u0634\u062a\u0647\u200c\u0634\u062f\u0647 \u0628\u062f\u0633\u062a":"\u0646\u06cc\u0645\u0627 \u062d\u06cc\u062f\u0631\u06cc\u200c\u0646\u0633\u0628","\u0632\u0645\u0627\u0646 \u062a\u0642\u0631\u06cc\u0628\u06cc \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646":"11 \u062f\u0642\u06cc\u0642\u0647"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/quera.org\/blog\/quera-jump-courses\/#article","isPartOf":{"@id":"https:\/\/quera.org\/blog\/quera-jump-courses\/"},"author":{"name":"\u0646\u06cc\u0645\u0627 \u062d\u06cc\u062f\u0631\u06cc\u200c\u0646\u0633\u0628","@id":"https:\/\/quera.org\/blog\/#\/schema\/person\/e85eb06ea3885447f0168787a447c556"},"headline":"\u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc \u062a\u0633\u062a\u200c\u0646\u0648\u06cc\u0633\u06cc \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e\u00bb \u06a9\u0648\u0626\u0631\u0627 \u06a9\u0627\u0644\u062c \u0631\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0627\u0648\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f","datePublished":"2021-10-01T09:26:55+00:00","dateModified":"2022-01-26T14:36:20+00:00","mainEntityOfPage":{"@id":"https:\/\/quera.org\/blog\/quera-jump-courses\/"},"wordCount":43,"commentCount":2,"publisher":{"@id":"https:\/\/quera.org\/blog\/#organization"},"image":{"@id":"https:\/\/quera.org\/blog\/quera-jump-courses\/#primaryimage"},"thumbnailUrl":"https:\/\/quera.org\/blog\/wp-content\/uploads\/2021\/10\/programming-code.jpg","articleSection":["\u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647","\u062f\u0627\u0633\u062a\u0627\u0646\u200c\u0647\u0627\u06cc \u06a9\u0648\u0626\u0631\u0627","\u0628\u0627 \u06a9\u0648\u0626\u0631\u0627 | \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647"],"inLanguage":"fa-IR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/quera.org\/blog\/quera-jump-courses\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/quera.org\/blog\/quera-jump-courses\/","url":"https:\/\/quera.org\/blog\/quera-jump-courses\/","name":"\u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc \u062a\u0633\u062a\u200c\u0646\u0648\u06cc\u0633\u06cc \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e\u00bb \u06a9\u0648\u0626\u0631\u0627 \u06a9\u0627\u0644\u062c \u0631\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0627\u0648\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f - \u06a9\u0648\u0626\u0631\u0627\u200c\u0628\u0644\u0627\u06af","isPartOf":{"@id":"https:\/\/quera.org\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/quera.org\/blog\/quera-jump-courses\/#primaryimage"},"image":{"@id":"https:\/\/quera.org\/blog\/quera-jump-courses\/#primaryimage"},"thumbnailUrl":"https:\/\/quera.org\/blog\/wp-content\/uploads\/2021\/10\/programming-code.jpg","datePublished":"2021-10-01T09:26:55+00:00","dateModified":"2022-01-26T14:36:20+00:00","description":"\u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u062c\u0646\u06af\u0648\u00bb \u0648 \u00ab\u062c\u0627\u0645\u067e \u0628\u06a9\u200c\u0627\u0646\u062f \u0628\u0627 \u0644\u0627\u0631\u0627\u0648\u0644\u00bb \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634 \u062c\u0646\u06af\u0648 \u0648 \u0644\u0627\u0631\u0627\u0648\u0644 \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0634\u0627\u0645\u0644 \u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc","breadcrumb":{"@id":"https:\/\/quera.org\/blog\/quera-jump-courses\/#breadcrumb"},"inLanguage":"fa-IR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/quera.org\/blog\/quera-jump-courses\/"]}]},{"@type":"ImageObject","inLanguage":"fa-IR","@id":"https:\/\/quera.org\/blog\/quera-jump-courses\/#primaryimage","url":"https:\/\/quera.org\/blog\/wp-content\/uploads\/2021\/10\/programming-code.jpg","contentUrl":"https:\/\/quera.org\/blog\/wp-content\/uploads\/2021\/10\/programming-code.jpg","width":1016,"height":677},{"@type":"BreadcrumbList","@id":"https:\/\/quera.org\/blog\/quera-jump-courses\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u062e\u0627\u0646\u0647","item":"https:\/\/quera.org\/blog\/"},{"@type":"ListItem","position":2,"name":"\u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647","item":"https:\/\/quera.org\/blog\/category\/developer\/"},{"@type":"ListItem","position":3,"name":"\u0628\u0627 \u06a9\u0648\u0626\u0631\u0627 | \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647","item":"https:\/\/quera.org\/blog\/category\/developer\/quera-developer\/"},{"@type":"ListItem","position":4,"name":"\u062a\u0645\u0631\u06cc\u0646\u200c\u0647\u0627\u06cc \u062a\u0633\u062a\u200c\u0646\u0648\u06cc\u0633\u06cc \u062f\u0648\u0631\u0647\u200c\u0647\u0627\u06cc \u00ab\u062c\u0627\u0645\u067e\u00bb \u06a9\u0648\u0626\u0631\u0627 \u06a9\u0627\u0644\u062c \u0631\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0627\u0648\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f"}]},{"@type":"WebSite","@id":"https:\/\/quera.org\/blog\/#website","url":"https:\/\/quera.org\/blog\/","name":"\u06a9\u0648\u0626\u0631\u0627\u200c\u0628\u0644\u0627\u06af","description":"\u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u062f\u0631\u0628\u0627\u0631\u0647 \u062f\u0646\u06cc\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc","publisher":{"@id":"https:\/\/quera.org\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/quera.org\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fa-IR"},{"@type":"Organization","@id":"https:\/\/quera.org\/blog\/#organization","name":"\u06a9\u0648\u0626\u0631\u0627","url":"https:\/\/quera.org\/blog\/","logo":{"@type":"ImageObject","inLanguage":"fa-IR","@id":"https:\/\/quera.org\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/quera.org\/blog\/wp-content\/uploads\/2022\/09\/logo-quera22-e1574766184574.png","contentUrl":"https:\/\/quera.org\/blog\/wp-content\/uploads\/2022\/09\/logo-quera22-e1574766184574.png","width":300,"height":300,"caption":"\u06a9\u0648\u0626\u0631\u0627"},"image":{"@id":"https:\/\/quera.org\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.instagram.com\/quera.ir\/"]},{"@type":"Person","@id":"https:\/\/quera.org\/blog\/#\/schema\/person\/e85eb06ea3885447f0168787a447c556","name":"\u0646\u06cc\u0645\u0627 \u062d\u06cc\u062f\u0631\u06cc\u200c\u0646\u0633\u0628","image":{"@type":"ImageObject","inLanguage":"fa-IR","@id":"https:\/\/quera.org\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4d60a336407aef45ca5007d9780b77b7db4c09d412ec2351fe8bb910f4f5971e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4d60a336407aef45ca5007d9780b77b7db4c09d412ec2351fe8bb910f4f5971e?s=96&d=mm&r=g","caption":"\u0646\u06cc\u0645\u0627 \u062d\u06cc\u062f\u0631\u06cc\u200c\u0646\u0633\u0628"},"sameAs":["https:\/\/nimah79.ir\/","https:\/\/www.linkedin.com\/in\/nimah79\/"]}]}},"_links":{"self":[{"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/posts\/61","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/comments?post=61"}],"version-history":[{"count":35,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/posts\/61\/revisions"}],"predecessor-version":[{"id":32975,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/posts\/61\/revisions\/32975"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/media\/325"}],"wp:attachment":[{"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/media?parent=61"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/categories?post=61"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/quera.org\/blog\/wp-json\/wp\/v2\/tags?post=61"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}