File tree Expand file tree Collapse file tree 2 files changed +93
-0
lines changed
services/app/apps/codebattle Expand file tree Collapse file tree 2 files changed +93
-0
lines changed Original file line number Diff line number Diff line change 1+ defmodule Codebattle.Utils.PopulateTasks do
2+ @ moduledoc false
3+
4+ def from_dir! ( dir ) do
5+ dir
6+ |> File . ls! ( )
7+ |> Enum . each ( & process_file ( dir , & 1 ) )
8+ end
9+
10+ defp process_file ( dir , file ) do
11+ dir
12+ |> Path . join ( file )
13+ |> File . read! ( )
14+ |> Jason . decode! ( keys: :atoms )
15+ |> Codebattle.Task . upsert! ( )
16+ end
17+ end
Original file line number Diff line number Diff line change 1+ defmodule Codebattle.Utils.PopulateTasksTest do
2+ use Codebattle.DataCase , async: true
3+
4+ test "from_dir!" do
5+ dir = Temp . mkdir! ( )
6+
7+ task1 = """
8+ {
9+ "name": "testtask1",
10+ "level": "elementary",
11+ "examples": "none",
12+ "origin": "user",
13+ "state": "active",
14+ "description_ru": "",
15+ "description_en": "none",
16+ "tags": [],
17+ "visibility": "public",
18+ "input_signature": [{
19+ "argument_name": "ping",
20+ "type": {
21+ "name": "string"
22+ }
23+ }],
24+ "output_signature": {
25+ "type": {
26+ "name": "string"
27+ }
28+ },
29+ "asserts": [{
30+ "arguments": "ping",
31+ "expected": "pong"
32+ }]
33+ }
34+ """
35+
36+ task2 = """
37+ {
38+ "name": "testtask2",
39+ "level": "medium",
40+ "examples": "none",
41+ "origin": "user",
42+ "state": "active",
43+ "description_ru": "",
44+ "description_en": "none",
45+ "tags": [],
46+ "visibility": "public",
47+ "input_signature": [{
48+ "argument_name": "ping",
49+ "type": {
50+ "name": "string"
51+ }
52+ }],
53+ "output_signature": {
54+ "type": {
55+ "name": "string"
56+ }
57+ },
58+ "asserts": [{
59+ "arguments": "ping",
60+ "expected": "pong"
61+ }]
62+ }
63+ """
64+
65+ dir
66+ |> Path . join ( "task1.json" )
67+ |> File . write! ( task1 )
68+
69+ dir
70+ |> Path . join ( "task2.json" )
71+ |> File . write! ( task2 )
72+
73+ assert Codebattle.Utils.PopulateTasks . from_dir! ( dir ) == :ok
74+ assert % { name: "testtask2" } = Codebattle.Task |> Ecto.Query . where ( name: "testtask2" ) |> Codebattle.Repo . one! ( )
75+ end
76+ end
You can’t perform that action at this time.
0 commit comments