Skip to content

Instantly share code, notes, and snippets.

@ybky42
Last active July 12, 2023 12:12
Show Gist options
  • Save ybky42/c98f58a0d55cf713fc8814dc0c526bb1 to your computer and use it in GitHub Desktop.
Save ybky42/c98f58a0d55cf713fc8814dc0c526bb1 to your computer and use it in GitHub Desktop.

YBKY saralash bosqichi topshirig'i

Impactt co-working markazi rezidentlariga majlis xonalarni oldindan oson band qilish uchun tizim yaratmoqchi va bunda sizning yordamingiz kerak.

Backend yo'nalishiga topshirganlar tizim uchun REST API tuzishi kerak bo'ladi. Frontend yo'nalishi qatnashchilaridan esa ushbu tizim uchun foydalanuvchi interfeysini yasash kutiladi.

Tizimning funksional talablari:

  • Xonalar haqida ma'lumot saqlash va taqdim qila olish;
  • Xonani ko'rsatilgan vaqt oralig'i uchun band qila olish;
  • Bir xonaning band qilingan vaqtlari ustma-ust tushmasligi kerak;
  • Autentifikatsiya (login) imkoniyatini qo'shish talab qilinmaydi.

Ko'p so'ralgan savollar:

  • Qaysi dasturlash tilidan foydalanish kerak? Istalgan!
  • Kutubxona va freymvorklardan foydalanish mumkinmi? Ha.
  • Qaysi ma'lumotlar omboridan foydalanish mumkin? Fuksional talablarni qondiradigan istalgan ma'lumotlar omboridan foydalanishingiz mumkin.

Loyihani topshirish uchun talablar.

  • GitHubda private repozitoriya yarating
  • Ishingizni bosqichma-bosqich commit qilib boring
  • GitHub repozitoriyaning settings qismidan ybky42 foydalanuvchisini Collaborator sifatida qo'shing.
  • 20-iyunga qadar loyihani yakunlab, Pull Request yaratib, ybky42 foydalanuvchisini Reviewer sifatida qo'shing.
  • Savollaringizni ushbu gist ostidagi izohlarda qoldiring.

Mavjud xonalarni olish uchun API

GET /api/rooms

Parametrlar:

  • search: Xona nomi orqali qidirish
  • type: xona turi bo'yicha saralash (focus, team, conference)
  • page: sahifa tartib raqami
  • page_size: sahifadagi maksimum natijalar soni

HTTP 200

{
  "page": 1,
  "count": 3,
  "page_size": 10,
  "results": [
    {
      "id": 1,
      "name": "mytaxi",
      "type": "focus",
      "capacity": 1
    },
    {
      "id": 2,
      "name": "workly",
      "type": "team",
      "capacity": 5
    },
    {
      "id": 3,
      "name": "express24",
      "type": "conference",
      "capacity": 15
    }
  ]
}

Xonani id orqali olish uchun API

GET /api/rooms/{id}

HTTP 200

{
  "id": 3,
  "name": "express24",
  "type": "conference",
  "capacity": 15
}

HTTP 404

{
  "error": "topilmadi"
}

Xonaning bo'sh vaqtlarini olish uchun API

GET /api/rooms/{id}/availability

Parametrlar:

  • date: sana (ko'rsatilmasa bugungi sana olinadi)

Response 200

[
  {
    "start": "05-06-2023 9:00:00",
    "end": "05-06-2023 11:00:00"
  },
  {
    "start": "05-06-2023 13:00:00",
    "end": "05-06-2023 18:00:00"
  }
]

Xonani band qilish uchun API

POST /api/rooms/{id}/book
{
  "resident": {
    "name": "Anvar Sanayev"
  },
  "start": "05-06-2023 9:00:00",
  "end": "05-06-2023 10:00:00"
}

HTTP 201: Xona muvaffaqiyatli band qilinganda

{
  "message": "xona muvaffaqiyatli band qilindi"
}

HTTP 410: Tanlangan vaqtda xona band bo'lganda

{
  "error": "uzr, siz tanlagan vaqtda xona band"
}
@azimjohn
Copy link

Assalomu alaykum Azimjon aka qachonga bu vazifani @azimjohn bajarish kerak

1-iyul, kun oxiriga qadar

@ShukuraliProgrammer
Copy link

ShukuraliProgrammer commented Jun 25, 2023 via email

@Yakhyokhan
Copy link

@azimjohn testlar qachon yozib tugatiladi.

@Yakhyokhan
Copy link

Urinishlar soni cheklanmaganmi. Muddati haqida ham ma'lumot berolasizmi

Cheklanmagan, lekin har bir urinishingiz yozib boriladi

otish otmaslikka zarari yoqmi yozib olinganini

@oaxadjonov21
Copy link

Urinishlar soni cheklanmaganmi. Muddati haqida ham ma'lumot berolasizmi

Cheklanmagan, lekin har bir urinishingiz yozib boriladi

Lekin anavi xatolikni deb qayta qayta urindim, aniqlash uchun, shunda bu zarami?

@davronkhamdamov
Copy link

@azimjohn man minutlarni tekshirmaganman cheklovlar qo'shsa bo'ladi degan edingiz hozir testda minutni ham tekshirayapdi nima qilay minutni ham qoshiaymi

@azimjohn
Copy link

azimjohn commented Jun 25, 2023

yana testlar qushilsa keyin yana quyib tekshiramizmi ?

@ShukuraliProgrammer ha, qayta tekshirishingiz kerak bo'ladi

ALL TESTS PASSED demagunigacha bu bosqichdan o'tmagansiz

@azimjohn
Copy link

@azimjohn testlar qachon yozib tugatiladi.

2-3 soatda yangi testlar qo'shiladi.
Unga qadar kodingizni moslashtirib oling. Hozir istalgancha test run qilishingiz mumkin, o'tish o'tmaslikka ta'siri yo'q.

@azimjohn
Copy link

@azimjohn man minutlarni tekshirmaganman cheklovlar qo'shsa bo'ladi degan edingiz hozir testda minutni ham tekshirayapdi nima qilay minutni ham qoshiaymi

Minutlar tekshirilmaydi degan joyi yo'q. Tekshirishingiz kerak albatta.
Yuqorida berilgan APIga mos bo'lishi kerak, shunga moslab test yozganmiz.

@temirovv
Copy link

hozir biz yozgan testlarimizni to'g'irlashimiz kerakmi yoki viewlarda yozilganlarnimi yani umuman dastur ishlashinimi

@azimjohn
Copy link

hozir biz yozgan testlarimizni to'g'irlashimiz kerakmi yoki viewlarda yozilganlarnimi yani umuman dastur ishlashinimi

Siz yozgan dastur, biz yozgan testlardan o'tishi kerak. U testlarni https://azimjon.com/ybky dan topishingiz mumkin.

@temirovv
Copy link

hamma testlardan o'tdi lekin yana failed deyapti bu yangi testlarni kutishim kerakligini anglatadimi:
test_ybky.py ...............F

============================================================================== FAILURES ==============================================================================
_____________________________________________________________________ test_more_tests_are_coming _____________________________________________________________________

def test_more_tests_are_coming():
  pytest.fail("Keyingi 12 soat ichida ko'proq testlar qo'shiladi")

E Failed: Keyingi 12 soat ichida ko'proq testlar qo'shiladi

test_ybky.py:253: Failed
====================================================================== short test summary info =======================================================================
FAILED test_ybky.py::test_more_tests_are_coming - Failed: Keyingi 12 soat ichida ko'proq testlar qo'shiladi
=================================================================== 1 failed, 15 passed in 20.25s ====================================================================

@husanIbragimov-zz
Copy link

  {
    "resident": {
      "name": "Anvar Sanayev"
    },
    "start": "05-06-2023 9:00:00",
    "end": "05-06-2023 10:00:00"
  }

siz shunday qilib berib yuborgansiz men esa

  {
      "resident": {
          "name": "Bob"
      },
      "start": "2023-06-25T15:30:00.000Z",
      "end": "2023-06-25T16:00:00.000Z"
  }

buni ham to'g'irlash kerakmi?

@Yakhyokhan
Copy link

hamma testlardan o'tdi lekin yana failed deyapti bu yangi testlarni kutishim kerakligini anglatadimi: test_ybky.py ...............F

============================================================================== FAILURES ============================================================================== _____________________________________________________________________ test_more_tests_are_coming _____________________________________________________________________

def test_more_tests_are_coming():
  pytest.fail("Keyingi 12 soat ichida ko'proq testlar qo'shiladi")

E Failed: Keyingi 12 soat ichida ko'proq testlar qo'shiladi

test_ybky.py:253: Failed ====================================================================== short test summary info ======================================================================= FAILED test_ybky.py::test_more_tests_are_coming - Failed: Keyingi 12 soat ichida ko'proq testlar qo'shiladi =================================================================== 1 failed, 15 passed in 20.25s ====================================================================

haa aka yana yangi testlar qoshiladi

@husanIbragimov-zz
Copy link

keyin menda xonani ochilishi va yopilish vaqtlari bor shunga ham etibor bermaydimi?

@temirovv
Copy link

temirovv commented Jun 25, 2023

hozir biz yozgan testlarimizni to'g'irlashimiz kerakmi yoki viewlarda yozilganlarnimi yani umuman dastur ishlashinimi

Siz yozgan dastur, biz yozgan testlardan o'tishi kerak. U testlarni https://azimjon.com/ybky dan topishingiz mumkin.

rahmat, men esa o'zimni testlarimni qaytadan yozib chiqibman 🥶🥶

@sarvar-akbarov
Copy link

testlarni ketma ketligini ko'rsa bo'ladimi?

@Yakhyokhan
Copy link

testlarni ketma ketligini ko'rsa bo'ladimi?

++++

@Ozodbek00
Copy link

jprq ni ishlatishda muammo bo'lyabdi.
test_ybky.py FFFFFFF da to'xtab turibdi. Nimani xato qilgan bo'lishim mumkin?

@bek-shoyatbek
Copy link

@azimjohn Assalamu alaykum menda hamma api to'g'ri ishlayabdi . Lekin Testda birortasidan ham o'tmayabdi nimagadir.

@Yakhyokhan
Copy link

Yakhyokhan commented Jun 25, 2023

@azimjohn Assalamu alaykum menda hamma api to'g'ri ishlayabdi . Lekin Testda birortasidan ham o'tmayabdi nimagadir.

Xatolarni oqing agar hammasi 404 bolsa urllarni tekshiring

@Yakhyokhan
Copy link

Yakhyokhan commented Jun 25, 2023

Urllaringiz {domain}/api/rooms bilan boshlangan bolishi kerak

{domain}/api/rooms
{domain}/api/rooms/{room_id}
Va h.k

@Mirxojiddin
Copy link

Menimcha run time error

@husanIbragimov-zz
Copy link

husanIbragimov-zz commented Jun 25, 2023

menda faqat date da xato deyabdi
05-06-2023 9:00:00 siz shunaqa jo'natyabsiz
2023-06-30 9:00:00 meniki esa
hammasida date deyabdi

@Yakhyokhan
Copy link

menda faqat date da xato deyabdi 05-06-2023 9:00:00 siz shunaqa jo'natyabsiz 2023-06-30 9:00:00 meniki esa hammasida date deyabdi

haa aka menam shunda yomon qiynaldim

@oaxadjonov21
Copy link

menda faqat date da xato deyabdi 05-06-2023 9:00:00 siz shunaqa jo'natyabsiz 2023-06-30 9:00:00 meniki esa hammasida date deyabdi

Muammo tesdamasda. Agar Siznikiga moslasa bizniki ishlamay qoladi.

@husanIbragimov-zz
Copy link

menda faqat date da xato deyabdi 05-06-2023 9:00:00 siz shunaqa jo'natyabsiz 2023-06-30 9:00:00 meniki esa hammasida date deyabdi

haa aka menam shunda yomon qiynaldim

xaa shu faqat shu hammayoda date keyin search ishlayabdi lekin bu yoda xato beryabdi

@azimjohn
Copy link

Yangi testlar qo'shildi

Hammaga omad!

@oaxadjonov21
Copy link

Yangi testlar qo'shildi

Hammaga omad!

Oxirgilarimi ular?

@Ramazon88
Copy link

Ramazon88 commented Jun 25, 2023

@azimjohn aka test_get_room_updated_availability_batch() shu testda start va end datetime objectida berilgan biz esa stringda qaytaryapmiz. Shunga testdan o'tolmayapmiz. Menimcha testda ham available_slots lar stringda berilishi kerak. Man faqat shu testdan o'tolmadim.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment