import { GradeSchool } from "./grade-school"; describe("School", () => { let school: GradeSchool; beforeEach(() => { school = new GradeSchool(); }); it("a new school has an empty roster", () => { expect(school.roster()).toEqual({}); }); it("adding a student adds them to the roster for the given grade", () => { school.add("Aimee", 2); const expectedDb = { 2: ["Aimee"] }; expect(school.roster()).toEqual(expectedDb); }); it("adding more students to the same grade adds them to the roster", () => { school.add("Blair", 2); school.add("James", 2); school.add("Paul", 2); const expectedDb = { 2: ["Blair", "James", "Paul"] }; expect(school.roster()).toEqual(expectedDb); }); it("adding students to different grades adds them to the roster", () => { school.add("Chelsea", 3); school.add("Logan", 7); const expectedDb = { 3: ["Chelsea"], 7: ["Logan"] }; expect(school.roster()).toEqual(expectedDb); }); it("grade returns the students in that grade in alphabetical order", () => { school.add("Franklin", 5); school.add("Bradley", 5); school.add("Jeff", 1); const expectedStudents = ["Bradley", "Franklin"]; expect(school.grade(5)).toEqual(expectedStudents); }); it("grade returns an empty array if there are no students in that grade", () => { expect(school.grade(1)).toEqual([]); }); it("the students names in each grade in the roster are sorted", () => { school.add("Jennifer", 4); school.add("Kareem", 6); school.add("Christopher", 4); school.add("Kyle", 3); const expectedSortedStudents = { 3: ["Kyle"], 4: ["Christopher", "Jennifer"], 6: ["Kareem"], }; expect(school.roster()).toEqual(expectedSortedStudents); }); it("roster cannot be modified outside of module", () => { school.add("Aimee", 2); const roster = school.roster(); roster[2].push("Oops."); const expectedDb = { 2: ["Aimee"] }; expect(school.roster()).toEqual(expectedDb); }); it("roster cannot be modified outside of module using grade()", () => { school.add("Aimee", 2); school.grade(2).push("Oops."); const expectedDb = { 2: ["Aimee"] }; expect(school.roster()).toEqual(expectedDb); }); it("a student can't be in two different grades", () => { school.add("Aimee", 2); school.add("Aimee", 1); expect(school.grade(2)).toEqual([]); }); });