Skip to content

Commit 2f95c76

Browse files
committed
feat: adds lesson16 homework by Yemi
1 parent 2e32759 commit 2f95c76

File tree

6 files changed

+391
-0
lines changed

6 files changed

+391
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
public enum Department {
2+
Sales,
3+
Finance,
4+
Technology,
5+
Research,
6+
Administration
7+
}
8+
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import java.time.LocalDate;
2+
import java.util.List;
3+
4+
public class Student {
5+
private long studentNumber;
6+
private String fullName;
7+
private Department department;
8+
private String emailAddress;
9+
private List<String> phoneNumbers;
10+
private LocalDate dateOfBirth;
11+
12+
public Student(long studentNumber, String fullName, Department department, String emailAddress, List<String> phoneNumbers, LocalDate dateOfBirth) {
13+
this.studentNumber = studentNumber;
14+
this.fullName = fullName;
15+
this.department = department;
16+
this.emailAddress = emailAddress;
17+
this.phoneNumbers = phoneNumbers;
18+
this.dateOfBirth = dateOfBirth;
19+
}
20+
21+
public long getStudentNumber() {
22+
return studentNumber;
23+
}
24+
25+
public void setStudentNumber(long studentNumber) {
26+
this.studentNumber = studentNumber;
27+
}
28+
29+
public String getFullName() {
30+
return fullName;
31+
}
32+
33+
public void setFullName(String fullName) {
34+
this.fullName = fullName;
35+
}
36+
37+
public Department getDepartment() {
38+
return department;
39+
}
40+
41+
public void setDepartment(Department department) {
42+
this.department = department;
43+
}
44+
45+
public String getEmailAddress() {
46+
return emailAddress;
47+
}
48+
49+
public void setEmailAddress(String emailAddress) {
50+
this.emailAddress = emailAddress;
51+
}
52+
53+
public List<String> getPhoneNumbers() {
54+
return phoneNumbers;
55+
}
56+
57+
public void setPhoneNumbers(List<String> phoneNumbers) {
58+
this.phoneNumbers = phoneNumbers;
59+
}
60+
61+
public LocalDate getDateOfBirth() {
62+
return dateOfBirth;
63+
}
64+
65+
public void setDateOfBirth(LocalDate dateOfBirth) {
66+
this.dateOfBirth = dateOfBirth;
67+
}
68+
69+
@Override
70+
public String toString() {
71+
return "Student{" +
72+
"studentNumber=" + studentNumber +
73+
", fullName='" + fullName + '\'' +
74+
", department=" + department +
75+
", emailAddress='" + emailAddress + '\'' +
76+
", phoneNumbers=" + phoneNumbers +
77+
", dateOfBirth=" + dateOfBirth +
78+
'}';
79+
}
80+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
public class StudentNotFoundException extends RuntimeException{
2+
public StudentNotFoundException(String message){
3+
super(message);
4+
}
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
2+
import java.util.HashMap;
3+
import java.util.Map;
4+
5+
public class StudentService {
6+
7+
private final Map<Long, Student> students;
8+
9+
public StudentService(){
10+
students = new HashMap<>();
11+
}
12+
13+
private void checkIfStudentExist(long studentNumber){
14+
if(students.containsKey(studentNumber)){
15+
return;
16+
}
17+
throw new StudentNotFoundException("Student with number " + studentNumber + " not found");
18+
}
19+
20+
public void deleteStudent(long studentNumber){
21+
checkIfStudentExist(studentNumber);
22+
students.remove(studentNumber);
23+
}
24+
25+
public void addStudent(Student student){
26+
students.put(student.getStudentNumber(), student);
27+
}
28+
29+
public int displayAllTechDeptStudents(){
30+
int count = 0;
31+
for(Student student : students.values()) {
32+
if(student.getDepartment().equals(Department.Technology)){
33+
count++;
34+
}
35+
}
36+
return count;
37+
}
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
2+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
3+
4+
import java.time.LocalDate;
5+
import java.util.ArrayList;
6+
import java.util.Arrays;
7+
import java.util.HashMap;
8+
import java.util.List;
9+
import java.util.Map;
10+
11+
import static org.junit.jupiter.api.Assertions.assertEquals;
12+
import org.junit.jupiter.api.BeforeEach;
13+
import org.junit.jupiter.api.Test;
14+
15+
public class StudentServiceTest {
16+
17+
StudentService classUnderTest;
18+
Map<Long, Student> students;
19+
20+
@BeforeEach
21+
public void setUp(){
22+
classUnderTest = new StudentService();
23+
24+
students = new HashMap<>();
25+
26+
List<String> phoneNumbers1 = new ArrayList<>();
27+
phoneNumbers1.add("301-999-3222");
28+
phoneNumbers1.add("301-211-3222");
29+
phoneNumbers1.add("301-212-3777");
30+
31+
Student student1 = new Student(
32+
112453698l,
33+
"Jane Doe",
34+
Department.Finance,
35+
36+
phoneNumbers1,
37+
LocalDate.of(2021, 11, 20)
38+
);
39+
40+
List<String> phoneNumbers2 = new ArrayList<>();
41+
phoneNumbers2.add("301-777-3222");
42+
phoneNumbers2.add("301-777-3222");
43+
phoneNumbers2.add("301-777-3777");
44+
45+
Student student2 = new Student(
46+
712453698l,
47+
"Johnie Walker",
48+
Department.Technology,
49+
50+
phoneNumbers2,
51+
LocalDate.of(2021, 10, 26)
52+
);
53+
54+
List<String> phoneNumbers3 = new ArrayList<>();
55+
phoneNumbers2.add("303-999-3222");
56+
phoneNumbers2.add("303-999-3222");
57+
phoneNumbers2.add("303-999-3777");
58+
59+
Student student3 = new Student(
60+
912453698l,
61+
"Fannie May",
62+
Department.Technology,
63+
64+
phoneNumbers3,
65+
LocalDate.of(2017, 9, 26)
66+
);
67+
68+
students.put(112453698l, student1);
69+
students.put(712453698l, student2);
70+
students.put(912453698l, student3);
71+
72+
classUnderTest.addStudent(student1);
73+
classUnderTest.addStudent(student2);
74+
classUnderTest.addStudent(student3);
75+
}
76+
77+
@Test
78+
public void testDeleteStudent_throw_Exception_IFNumber_Not_Found(){
79+
//Arrange
80+
Student student = new Student(
81+
44444444l,
82+
"Gonnie ByeBye",
83+
Department.Technology,
84+
85+
null,
86+
LocalDate.of(2019, 10, 21)
87+
);
88+
classUnderTest.addStudent(student);
89+
//Act
90+
classUnderTest.deleteStudent(student.getStudentNumber());
91+
92+
//Assert
93+
long studentNumber = 44444444l;
94+
assertThatThrownBy(() -> classUnderTest.deleteStudent(studentNumber))
95+
.isInstanceOf(StudentNotFoundException.class)
96+
.hasMessage("Student with number " + studentNumber + " not found");
97+
}
98+
99+
@Test
100+
public void testDisplayAllTechDeptStudents(){
101+
Student student = new Student(
102+
44444444l,
103+
"Gonnie ByeBye",
104+
Department.Technology,
105+
106+
null,
107+
LocalDate.of(2019, 10, 21)
108+
);
109+
classUnderTest.addStudent(student);
110+
//Act
111+
int numOfTechStudents = classUnderTest.displayAllTechDeptStudents();
112+
113+
//Assert
114+
int expectedCount = 3;
115+
assertEquals(expectedCount, numOfTechStudents);
116+
}
117+
118+
@Test
119+
public void testAddStudent(){
120+
//Arrange
121+
Student student = new Student(
122+
44444444l,
123+
"Gonnie ByeBye",
124+
Department.Technology,
125+
126+
null,
127+
LocalDate.of(2019, 10, 21)
128+
);
129+
130+
//Act
131+
classUnderTest.addStudent(student);
132+
133+
//Assert
134+
int expectedCount = 3;
135+
assertEquals(expectedCount, students.size());
136+
}
137+
138+
139+
140+
141+
}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
2+
import java.time.LocalDate;
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import org.checkerframework.checker.nullness.qual.AssertNonNullIfNonNull;
7+
import static org.junit.jupiter.api.Assertions.assertEquals;
8+
import static org.junit.jupiter.api.Assertions.assertNotNull;
9+
import org.junit.jupiter.api.BeforeEach;
10+
import org.junit.jupiter.api.Test;
11+
12+
public class StudentTest {
13+
private Student classUnderTest;
14+
15+
@BeforeEach
16+
public void setUp(){
17+
// classUnderTest = new Student();
18+
// List<Student> studentList = new ArrayList<>();
19+
List<String> phoneNumbers = new ArrayList<>();
20+
phoneNumbers.add("302-999-2222");
21+
phoneNumbers.add("302-211-2222");
22+
phoneNumbers.add("302-212-7777");
23+
classUnderTest = new Student(
24+
612453698l,
25+
"John Doe",
26+
Department.Finance,
27+
28+
phoneNumbers,
29+
LocalDate.of(2022, 12, 25)
30+
);
31+
32+
}
33+
34+
@Test
35+
void testGetEmailAddress(){
36+
//Arrange
37+
classUnderTest.setEmailAddress("[email protected]");
38+
39+
//Act
40+
String expectedEmailAddress = classUnderTest.getEmailAddress();
41+
42+
//Assert
43+
String actualEmailAddress = "[email protected]";
44+
assertEquals(expectedEmailAddress, actualEmailAddress);
45+
}
46+
47+
@Test
48+
void testGetStudentNumber(){
49+
//Arrange
50+
classUnderTest.setStudentNumber(612453698l);
51+
52+
//Act
53+
long expectedStudentNumber = classUnderTest.getStudentNumber();
54+
55+
//Assert
56+
long actualStudentNumber = 612453698l;
57+
assertEquals(expectedStudentNumber, actualStudentNumber);
58+
}
59+
60+
@Test
61+
void testGetStudentFullName(){
62+
//Arrange
63+
classUnderTest.setFullName("John Doe");
64+
65+
//Act
66+
String expectedStudentName = classUnderTest.getFullName();
67+
68+
//Assert
69+
String actualStudentName = "John Doe";
70+
assertEquals(expectedStudentName, actualStudentName);
71+
}
72+
73+
@Test
74+
void testGetDepartment(){
75+
//Arrange
76+
classUnderTest.setDepartment(Department.Administration);
77+
78+
//Act
79+
Department expectedDepartment = classUnderTest.getDepartment();
80+
81+
//Assert
82+
Department actualDepartment = Department.Administration;
83+
assertEquals(expectedDepartment, actualDepartment);
84+
}
85+
86+
@Test
87+
void testGetDateOfBirth(){
88+
//Arrange
89+
LocalDate date = LocalDate.of(2021,9,12);
90+
classUnderTest.setDateOfBirth(date);
91+
92+
//Act
93+
LocalDate expectedDate = classUnderTest.getDateOfBirth();
94+
95+
//Assert
96+
LocalDate actualDate = date;
97+
assertEquals(expectedDate, actualDate);
98+
}
99+
100+
@Test
101+
void testToString(){
102+
//Arrange
103+
104+
Student student = new Student(
105+
612453698l,
106+
"John Doe",
107+
Department.Finance,
108+
109+
null,
110+
LocalDate.of(2022, 12, 25)
111+
);
112+
//Act
113+
String expectedResult = classUnderTest.toString();
114+
115+
//Assert
116+
assertNotNull(expectedResult);
117+
}
118+
119+
}

0 commit comments

Comments
 (0)