From 0d6070d2c992877acb88904d5b4098d7b85bd7f7 Mon Sep 17 00:00:00 2001
From: Josef Olsson <josol381@student.liu.se>
Date: Wed, 21 Apr 2021 10:13:19 +0200
Subject: [PATCH] Add copy competition api and test

---
 server/app/apis/competitions.py | 12 ++++++++++++
 server/app/apis/slides.py       |  2 +-
 server/tests/test_app.py        | 12 +++++++++++-
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/server/app/apis/competitions.py b/server/app/apis/competitions.py
index db2ca68a..a18ed85e 100644
--- a/server/app/apis/competitions.py
+++ b/server/app/apis/competitions.py
@@ -61,3 +61,15 @@ class CompetitionSearch(Resource):
         args = competition_search_parser.parse_args(strict=True)
         items, total = dbc.search.competition(**args)
         return list_response(list_schema.dump(items), total)
+
+
+@api.route("/<CID>/copy")
+@api.param("CID")
+class SlidesOrder(Resource):
+    @check_jwt(editor=True)
+    def post(self, CID):
+        item_competition = dbc.get.competition(CID)
+
+        item_competition_copy = dbc.copy.competition(item_competition)
+
+        return item_response(schema.dump(item_competition_copy))
diff --git a/server/app/apis/slides.py b/server/app/apis/slides.py
index 3d9ce6fe..3c25f901 100644
--- a/server/app/apis/slides.py
+++ b/server/app/apis/slides.py
@@ -89,7 +89,7 @@ class SlidesOrder(Resource):
 @api.param("CID,SOrder")
 class SlidesOrder(Resource):
     @check_jwt(editor=True)
-    def put(self, CID, SOrder):
+    def post(self, CID, SOrder):
         item_slide = dbc.get.slide(CID, SOrder)
 
         item_slide_copy = dbc.copy.slide(item_slide)
diff --git a/server/tests/test_app.py b/server/tests/test_app.py
index aa1758f9..cc50d4fd 100644
--- a/server/tests/test_app.py
+++ b/server/tests/test_app.py
@@ -98,6 +98,16 @@ def test_competition_api(client):
     response, body = delete(client, f"/api/competitions/{competition_id}", headers=headers)
     assert response.status_code == codes.OK
 
+    # Get competition
+    competition_id = 2
+    response, body = get(client, f"/api/competitions/{competition_id}", headers=headers)
+    assert response.status_code == codes.OK
+
+    # Copies competition
+    for _ in range(10):
+        response, _ = post(client, f"/api/competitions/{competition_id}/copy", headers=headers)
+        assert response.status_code == codes.OK
+
 
 def test_auth_and_user_api(client):
     add_default_values()
@@ -303,7 +313,7 @@ def test_slide_api(client):
 
     # Copies slide
     for _ in range(10):
-        response, _ = put(client, f"/api/competitions/{CID}/slides/{slide_order}/copy", headers=headers)
+        response, _ = post(client, f"/api/competitions/{CID}/slides/{slide_order}/copy", headers=headers)
         assert response.status_code == codes.OK
 
 
-- 
GitLab