Skip to content

Commit 3ce4c45

Browse files
authored
grade-school: add test template (exercism#1892)
1 parent 186e189 commit 3ce4c45

2 files changed

Lines changed: 65 additions & 35 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{%- import "generator_macros.j2" as macros -%}
2+
{%- macro test_case( case) -%}
3+
{%- set input = case["input"] -%}
4+
def test_{{ case["description"] | to_snake }}(self):
5+
school = School()
6+
{% for student, grade in input["students"] -%}
7+
school.add_student(name="{{ student }}", grade={{ grade }})
8+
{% endfor -%}
9+
expected = {{ case["expected"] }}
10+
{% if "desiredGrade" in input -%}
11+
self.assertEqual(school.{{ case["property"] | to_snake }}({{ input["desiredGrade"] }}), expected)
12+
{%- else -%}
13+
self.assertEqual(school.{{ case["property"] | to_snake }}(), expected)
14+
{%- endif %}
15+
{% endmacro -%}
16+
import unittest
17+
18+
from {{ exercise | to_snake }} import School
19+
20+
{{ macros.canonical_ref(version) }}
21+
22+
class {{ exercise | camel_case }}Test(unittest.TestCase):
23+
{% for case in cases %}
24+
{{ test_case(case) }}
25+
{% endfor %}
26+
27+
{{ macros.footer(has_error_case) }}

exercises/grade-school/grade_school_test.py

Lines changed: 38 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,60 +2,63 @@
22

33
from grade_school import School
44

5-
65
# Tests adapted from `problem-specifications//canonical-data.json` @ v1.0.0
76

7+
88
class GradeSchoolTest(unittest.TestCase):
9-
def test_adding_student_adds_them_to_sorted_roster(self):
9+
def test_adding_a_student_adds_them_to_the_sorted_roster(self):
1010
school = School()
11-
school.add_student(name='Aimee', grade=2)
12-
expected = ['Aimee']
11+
school.add_student(name="Aimee", grade=2)
12+
expected = ["Aimee"]
1313
self.assertEqual(school.roster(), expected)
1414

15-
def test_adding_more_students_adds_them_to_sorted_roster(self):
15+
def test_adding_more_student_adds_them_to_the_sorted_roster(self):
1616
school = School()
17-
school.add_student(name='Blair', grade=2)
18-
school.add_student(name='James', grade=2)
19-
school.add_student(name='Paul', grade=2)
20-
expected = ['Blair', 'James', 'Paul']
17+
school.add_student(name="Blair", grade=2)
18+
school.add_student(name="James", grade=2)
19+
school.add_student(name="Paul", grade=2)
20+
expected = ["Blair", "James", "Paul"]
2121
self.assertEqual(school.roster(), expected)
2222

23-
def test_students_in_different_grades_in_same_roster(self):
23+
def test_adding_students_to_different_grades_adds_them_to_the_same_sorted_roster(
24+
self
25+
):
2426
school = School()
25-
school.add_student(name='Chelsea', grade=3)
26-
school.add_student(name='Logan', grade=7)
27-
expected = ['Chelsea', 'Logan']
27+
school.add_student(name="Chelsea", grade=3)
28+
school.add_student(name="Logan", grade=7)
29+
expected = ["Chelsea", "Logan"]
2830
self.assertEqual(school.roster(), expected)
2931

30-
def test_roster_returns_empty_list_if_no_students_are_enrolled(self):
31-
self.assertEqual(School().roster(), [])
32+
def test_roster_returns_an_empty_list_if_there_are_no_students_enrolled(self):
33+
school = School()
34+
expected = []
35+
self.assertEqual(school.roster(), expected)
3236

33-
def test_roster_is_sorted_by_grade_then_name(self):
37+
def test_student_names_with_grades_are_displayed_in_the_same_sorted_roster(self):
3438
school = School()
35-
for name, grade in [
36-
('Peter', 2),
37-
('Anna', 1),
38-
('Barb', 1),
39-
('Zoe', 2),
40-
('Alex', 2),
41-
('Jim', 3),
42-
('Charlie', 1),
43-
]:
44-
school.add_student(name, grade)
45-
expected = ['Anna', 'Barb', 'Charlie', 'Alex', 'Peter', 'Zoe', 'Jim']
39+
school.add_student(name="Peter", grade=2)
40+
school.add_student(name="Anna", grade=1)
41+
school.add_student(name="Barb", grade=1)
42+
school.add_student(name="Zoe", grade=2)
43+
school.add_student(name="Alex", grade=2)
44+
school.add_student(name="Jim", grade=3)
45+
school.add_student(name="Charlie", grade=1)
46+
expected = ["Anna", "Barb", "Charlie", "Alex", "Peter", "Zoe", "Jim"]
4647
self.assertEqual(school.roster(), expected)
4748

48-
def test_grade_returns_students_in_that_grade_in_alphabetical_order(self):
49+
def test_grade_returns_the_students_in_that_grade_in_alphabetical_order(self):
4950
school = School()
50-
school.add_student(name='Franklin', grade=5)
51-
school.add_student(name='Bradley', grade=5)
52-
school.add_student(name='Jeff', grade=1)
53-
expected = ['Bradley', 'Franklin']
51+
school.add_student(name="Franklin", grade=5)
52+
school.add_student(name="Bradley", grade=5)
53+
school.add_student(name="Jeff", grade=1)
54+
expected = ["Bradley", "Franklin"]
5455
self.assertEqual(school.grade(5), expected)
5556

56-
def test_grade_returns_empty_list_if_no_students_are_in_that_grade(self):
57-
self.assertEqual(School().grade(1), [])
57+
def test_grade_returns_an_empty_list_if_there_are_no_students_in_that_grade(self):
58+
school = School()
59+
expected = []
60+
self.assertEqual(school.grade(1), expected)
5861

5962

60-
if __name__ == '__main__':
63+
if __name__ == "__main__":
6164
unittest.main()

0 commit comments

Comments
 (0)