Skip to content

Commit 7a1827e

Browse files
authored
feat: adds lesson16 homework by Yemi (#515)
* feat: adds lesson16 homework by Yemi * feat: adds lesson16 homework by Yemi * feat:adds new package name for lesson16 homework by Yemi * feat:adds new package name for lesson16 homework by Yemi
1 parent d46c282 commit 7a1827e

File tree

6 files changed

+427
-0
lines changed

6 files changed

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

0 commit comments

Comments
 (0)