• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

source-academy / backend / 18dc689a4df4836fc6967bf0f74dc252964bd175-PR-1180

08 Sep 2024 06:14PM UTC coverage: 79.088% (-15.3%) from 94.372%
18dc689a4df4836fc6967bf0f74dc252964bd175-PR-1180

Pull #1180

github

josh1248
Change appropriate routes into admin scope
Pull Request #1180: Transfer groundControl (and admin panel) from staff to admin route

7 of 12 new or added lines in 1 file covered. (58.33%)

499 existing lines in 25 files now uncovered.

2602 of 3290 relevant lines covered (79.09%)

1023.2 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

18.75
/lib/cadet_web/admin_controllers/admin_achievements_controller.ex
1
defmodule CadetWeb.AdminAchievementsController do
2
  use CadetWeb, :controller
3

4
  use PhoenixSwagger
5

6
  alias Cadet.Incentives.Achievements
7

8
  def bulk_update(conn, %{"achievements" => achievements}) do
UNCOV
9
    course_reg = conn.assigns.course_reg
×
10

11
    achievements
UNCOV
12
    |> Enum.map(&json_to_achievement(&1, course_reg.course_id))
×
13
    |> Achievements.upsert_many()
UNCOV
14
    |> handle_standard_result(conn)
×
15
  end
16

17
  def update(conn, %{"uuid" => uuid, "achievement" => achievement}) do
UNCOV
18
    course_reg = conn.assigns.course_reg
×
19

20
    achievement
UNCOV
21
    |> json_to_achievement(course_reg.course_id, uuid)
×
22
    |> Achievements.upsert()
UNCOV
23
    |> handle_standard_result(conn)
×
24
  end
25

26
  def delete(conn, %{"uuid" => uuid}) do
27
    uuid
28
    |> Achievements.delete()
UNCOV
29
    |> handle_standard_result(conn)
×
30
  end
31

32
  defp json_to_achievement(json, course_id, uuid \\ nil) do
UNCOV
33
    json =
×
34
      json
35
      |> snake_casify_string_keys_recursive()
36
      |> rename_keys([
37
        {"deadline", "close_at"},
38
        {"release", "open_at"},
39
        {"card_background", "card_tile_url"}
40
      ])
41
      |> Map.put("course_id", course_id)
42
      |> case do
43
        map = %{"view" => view} ->
44
          map
45
          |> Map.delete("view")
UNCOV
46
          |> Map.merge(
×
47
            view
48
            |> rename_keys([{"cover_image", "canvas_url"}])
49
            |> Map.take(~w(canvas_url description completion_text))
50
          )
51

52
        map ->
UNCOV
53
          map
×
54
      end
55

UNCOV
56
    if is_nil(uuid) do
×
UNCOV
57
      json
×
58
    else
UNCOV
59
      Map.put(json, "uuid", uuid)
×
60
    end
61
  end
62

63
  swagger_path :update do
1✔
64
    put("/courses/{course_id}/admin/achievements/{uuid}")
65

66
    summary("Inserts or updates an achievement")
67

68
    security([%{JWT: []}])
69

70
    parameters do
71
      uuid(:path, :string, "Achievement UUID; takes precendence over UUID in payload",
72
        required: true,
73
        format: :uuid
74
      )
75

76
      achievement(
77
        :body,
78
        Schema.ref(:Achievement),
79
        "The achievement to insert, or properties to update",
80
        required: true
81
      )
82
    end
83

84
    response(204, "Success")
85
    response(401, "Unauthorised")
86
    response(403, "Forbidden")
87
  end
88

89
  swagger_path :bulk_update do
1✔
90
    put("/courses/{course_id}/admin/achievements")
91

92
    summary("Inserts or updates achievements")
93

94
    security([%{JWT: []}])
95

96
    parameters do
97
      achievement(
98
        :body,
99
        Schema.array(:Achievement),
100
        "The achievements to insert or sets of properties to update",
101
        required: true
102
      )
103
    end
104

105
    response(204, "Success")
106
    response(401, "Unauthorised")
107
    response(403, "Forbidden")
108
  end
109

110
  swagger_path :delete do
1✔
111
    PhoenixSwagger.Path.delete("/courses/{course_id}/admin/achievements/{uuid}")
112

113
    summary("Deletes an achievement")
114
    security([%{JWT: []}])
115

116
    parameters do
117
      uuid(:path, :string, "Achievement UUID", required: true, format: :uuid)
118
    end
119

120
    response(204, "Success")
121
    response(401, "Unauthorised")
122
    response(403, "Forbidden")
123
    response(404, "Achievement not found")
124
  end
125
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc