diff --git a/backend/brewbucks/tests/test_views.py b/backend/brewbucks/tests/test_views.py index 517d550..d8e2a87 100644 --- a/backend/brewbucks/tests/test_views.py +++ b/backend/brewbucks/tests/test_views.py @@ -167,10 +167,10 @@ def test_create_menu(client): def test_create_menu_item(client, sample_user): - # 首先创建测试菜单项 + test_create_menu(client) - # 新的菜单项数据 + item_data = { "user_id": sample_user.user_id, "name": "Flat White", @@ -179,7 +179,7 @@ def test_create_menu_item(client, sample_user): "orderable": True } - # 创建新的菜单项 + response = client.post("/api/v1/menu_items", json=item_data) assert response.status_code == 201 assert response.json["name"] == item_data["name"] @@ -187,7 +187,7 @@ def test_create_menu_item(client, sample_user): assert response.json["price"] == item_data["price"] assert response.json["orderable"] is item_data["orderable"] - # 验证新的菜单项是否确实被创建 + response = client.get("/api/v1/menu_items") assert response.status_code == 200 menu_items = response.json @@ -205,15 +205,15 @@ def test_get_menu_items(client): def test_update_menu_item(client, sample_user): - # 首先创建测试菜单项 + test_create_menu(client) - # 获取菜单项,以便获取要更新的项目ID + response = client.get("/api/v1/menu_items") assert response.status_code == 200 menu_items = response.json - # 假设要更新 Espresso 项目 + espresso_item = next(item for item in menu_items if item["name"] == "Espresso") update_data = { "user_id": sample_user.user_id, @@ -223,7 +223,7 @@ def test_update_menu_item(client, sample_user): "orderable": True } - # 进行更新操作 + response = client.put(f"/api/v1/menu_items/{espresso_item['item_id']}", json=update_data) assert response.status_code == 200 assert response.json["name"] == "Updated Espresso" @@ -231,7 +231,7 @@ def test_update_menu_item(client, sample_user): assert response.json["price"] == 3.0 assert response.json["orderable"] is True - # 验证项目确实被更新 + response = client.get(f"/api/v1/menu_items/{espresso_item['item_id']}") assert response.status_code == 200 updated_item = response.json diff --git a/k6_test/create_order.js b/k6_test/create_order.js index e351f58..6b538c0 100644 --- a/k6_test/create_order.js +++ b/k6_test/create_order.js @@ -3,9 +3,9 @@ import { check, sleep } from 'k6'; export const options = { stages: [ - { duration: '2m', target: 1000 }, // Ramp-up to 20 users over 1 minute - { duration: '2m', target: 2500 }, // Stay at 20 users for 2 minutes - { duration: '2m', target: 0 }, // Ramp-down to 0 users over 1 minute + { duration: '2m', target: 1000 }, // Ramp-up to 2000 users over 1 minute + { duration: '2m', target: 2500 }, // Stay at 2500 users for 2 minutes + { duration: '2m', target: 0 }, // Ramp-down to 0 users over 2 minute ], }; diff --git a/k6_test/delete_test_menu_item.js b/k6_test/delete_test_menu_item.js new file mode 100644 index 0000000..3228a6d --- /dev/null +++ b/k6_test/delete_test_menu_item.js @@ -0,0 +1,50 @@ +import http from 'k6/http'; +import { check, sleep } from 'k6'; + +export const options = { + vus: 1, + duration: '120m', +}; + +export default function () { + + const userId = 1; + + + let getItemsRes = http.get('http://brewbucks-485861802.us-east-1.elb.amazonaws.com/api/v1/menu_items', { + headers: { 'Content-Type': 'application/json' }, + }); + + check(getItemsRes, { + 'items retrieval status is 200': (r) => r.status === 200, + }); + + let items = getItemsRes.json(); + let itemsToDelete = items.slice(5); + + + itemsToDelete.forEach(item => { + let deleteData = JSON.stringify({ + user_id: userId, + item_id: item.item_id, + }); + + + deleteItem(deleteData, item.name); + }); +} + +function deleteItem(deleteData, itemName) { + let deleteRes = http.del('http://brewbucks-485861802.us-east-1.elb.amazonaws.com/api/v1/menu_items', deleteData, { + headers: { 'Content-Type': 'application/json' }, + }); + + + console.log(`Delete response for ${itemName}: ${deleteRes.status} ${deleteRes.body}`); + + check(deleteRes, { + [`item deletion status for ${itemName} is 200`]: (r) => r.status === 200, + }); + + +} diff --git a/model/db_diagram.png b/model/db_diagram.png index 4a77b2a..386e362 100644 Binary files a/model/db_diagram.png and b/model/db_diagram.png differ