|
4 | 4 | require_relative 'grade_school'
|
5 | 5 |
|
6 | 6 | class SchoolTest < Minitest::Test
|
7 |
| - attr_reader :school |
8 |
| - |
9 |
| - def setup |
10 |
| - @school = School.new |
11 |
| - end |
12 |
| - |
13 |
| - def test_an_empty_school |
14 |
| - assert_equal({}, school.to_h) |
| 7 | + def test_empty_grade |
| 8 | + school = School.new |
| 9 | + expected = [] |
| 10 | + assert_equal expected, school.grade(1) |
15 | 11 | end
|
16 | 12 |
|
17 | 13 | def test_add_student
|
18 | 14 | skip
|
19 |
| - school.add('Aimee', 2) |
20 |
| - assert_equal({ 2 => ['Aimee'] }, school.to_h) |
| 15 | + school = School.new |
| 16 | + assert school.add('Aimee', 2) |
| 17 | + expected = ['Aimee'] |
| 18 | + assert_equal expected, school.grade(2) |
21 | 19 | end
|
22 | 20 |
|
23 |
| - def test_add_more_students_in_same_class |
| 21 | + def test_add_students_to_different_grades |
24 | 22 | skip
|
25 |
| - school.add('Blair', 2) |
26 |
| - school.add('James', 2) |
27 |
| - school.add('Paul', 2) |
28 |
| - assert_equal({ 2 => %w(Blair James Paul) }, school.to_h) |
| 23 | + school = School.new |
| 24 | + school.add('Aimee', 3) |
| 25 | + school.add('Beemee', 7) |
| 26 | + assert_equal ['Aimee'], school.grade(3) |
| 27 | + assert_equal ['Beemee'], school.grade(7) |
29 | 28 | end
|
30 | 29 |
|
31 |
| - def test_add_students_to_different_grades |
| 30 | + def test_grade_with_multiple_students |
32 | 31 | skip
|
33 |
| - school.add('Chelsea', 3) |
34 |
| - school.add('Logan', 7) |
35 |
| - assert_equal({ 3 => ['Chelsea'], 7 => ['Logan'] }, school.to_h) |
| 32 | + school = School.new |
| 33 | + grade = 6 |
| 34 | + students = %w(Aimee Beemee Ceemee) |
| 35 | + students.each { |student| school.add(student, grade) } |
| 36 | + assert_equal students, school.grade(grade) |
36 | 37 | end
|
37 | 38 |
|
38 |
| - def test_get_students_in_a_grade |
| 39 | + def test_grade_with_multiple_students_sorts_correctly |
39 | 40 | skip
|
40 |
| - school.add('Bradley', 5) |
41 |
| - school.add('Franklin', 5) |
42 |
| - school.add('Jeff', 1) |
43 |
| - assert_equal %w(Bradley Franklin), school.grade(5) |
| 41 | + school = School.new |
| 42 | + grade = 6 |
| 43 | + students = %w(Beemee Aimee Ceemee) |
| 44 | + students.each { |student| school.add(student, grade) } |
| 45 | + expected = students.sort |
| 46 | + assert_equal expected, school.grade(grade) |
44 | 47 | end
|
45 | 48 |
|
46 |
| - def test_get_students_sorted_in_a_grade |
| 49 | + def test_empty_students_by_grade |
47 | 50 | skip
|
48 |
| - school.add('Franklin', 5) |
49 |
| - school.add('Bradley', 5) |
50 |
| - school.add('Jeff', 1) |
51 |
| - assert_equal %w(Bradley Franklin), school.grade(5) |
| 51 | + school = School.new |
| 52 | + expected = {} |
| 53 | + assert_equal expected, school.students_by_grade |
52 | 54 | end
|
53 | 55 |
|
54 |
| - def test_get_students_in_a_non_existant_grade |
| 56 | + def test_students_by_grade |
55 | 57 | skip
|
56 |
| - assert_equal [], school.grade(1) |
| 58 | + school = School.new |
| 59 | + grade = 6 |
| 60 | + students = %w(Beemee Aimee Ceemee) |
| 61 | + students.each { |student| school.add(student, grade) } |
| 62 | + expected = { grade => students.sort } |
| 63 | + assert_equal expected, school.students_by_grade |
57 | 64 | end
|
58 | 65 |
|
59 |
| - def test_sort_school # rubocop:disable Metrics/MethodLength |
| 66 | + def test_students_by_grade_sorted |
60 | 67 | skip
|
61 |
| - [ |
62 |
| - ['Jennifer', 4], ['Kareem', 6], |
63 |
| - ['Christopher', 4], ['Kyle', 3] |
64 |
| - ].each do |name, grade| |
65 |
| - school.add(name, grade) |
| 68 | + school = School.new |
| 69 | + everyone.each do |grade, students| |
| 70 | + students.each { |student| school.add(student, grade) } |
66 | 71 | end
|
67 |
| - sorted = { |
68 |
| - 3 => ['Kyle'], |
69 |
| - 4 => %w(Christopher Jennifer), |
70 |
| - 6 => ['Kareem'] |
71 |
| - } |
72 |
| - assert_equal sorted, school.to_h |
73 |
| - assert_equal [3, 4, 6], school.to_h.keys |
| 72 | + expected = everyone_sorted |
| 73 | + assert_equal expected, school.students_by_grade |
| 74 | + end |
| 75 | + |
| 76 | + def everyone |
| 77 | + { 2 => %w(Beemee Aimee Ceemee), |
| 78 | + 1 => %w(Effmee Geemee), |
| 79 | + 3 => %w(Eeemee Deemee) } |
74 | 80 | end
|
75 | 81 |
|
76 |
| - # Problems in exercism evolve over time, |
77 |
| - # as we find better ways to ask questions. |
| 82 | + def everyone_sorted |
| 83 | + { 1 => %w(Effmee Geemee), |
| 84 | + 2 => %w(Aimee Beemee Ceemee), |
| 85 | + 3 => %w(Deemee Eeemee) } |
| 86 | + end |
| 87 | + |
| 88 | + # Problems in exercism evolve over time, as we find better ways to ask |
| 89 | + # questions. |
78 | 90 | # The version number refers to the version of the problem you solved,
|
79 | 91 | # not your solution.
|
80 | 92 | #
|
81 |
| - # Define a constant named VERSION inside of BookKeeping. |
| 93 | + # Define a constant named VERSION inside of the top level BookKeeping |
| 94 | + # module, which may be placed near the end of your file. |
| 95 | + # |
| 96 | + # In your file, it will look like this: |
| 97 | + # |
| 98 | + # module BookKeeping |
| 99 | + # VERSION = 2 # Where the version number matches the one in the test. |
| 100 | + # end |
| 101 | + # |
82 | 102 | # If you are curious, read more about constants on RubyDoc:
|
83 | 103 | # http://ruby-doc.org/docs/ruby-doc-bundle/UsersGuide/rg/constants.html
|
| 104 | + |
84 | 105 | def test_bookkeeping
|
85 | 106 | skip
|
86 |
| - assert_equal 1, BookKeeping::VERSION |
| 107 | + assert_equal 2, BookKeeping::VERSION |
87 | 108 | end
|
88 | 109 | end
|
0 commit comments