Skip to content

Commit

Permalink
change return type to boolean for fireEmployee()
Browse files Browse the repository at this point in the history
add test for fireEmployee()
  • Loading branch information
deepcloudlabs committed Jun 23, 2020
1 parent e2ce0d6 commit b8a0c6c
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
package com.example.hr.application;

import com.example.hr.domain.Employee;
import com.example.hr.domain.TcKimlikNo;

/**
*
* @author Binnur Kurt <binnur.kurt@gmail.com>
*
*/
public interface EmployeeApplication {

boolean hireEmployee(Employee employee);

void fireEmployee(Employee employee);
boolean fireEmployee(TcKimlikNo identity);

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@

import com.example.hr.application.EmployeeApplication;
import com.example.hr.domain.Employee;
import com.example.hr.domain.TcKimlikNo;
import com.example.hr.events.EmployeeFiredEvent;
import com.example.hr.events.EmployeeHiredEvent;
import com.example.hr.infrastructure.EventPushlisher;
import com.example.hr.repository.EmployeeRepository;

/**
*
* @author Binnur Kurt <binnur.kurt@gmail.com>
*
*/
public class SimpleEmployeeApplication implements EmployeeApplication {
private EmployeeRepository employeeRepository;
private EventPushlisher eventPushlisher;
Expand All @@ -27,9 +33,13 @@ public boolean hireEmployee(Employee employee) {
}

@Override
public void fireEmployee(Employee employee) {
employeeRepository.remove(employee);
eventPushlisher.publishEvent(new EmployeeFiredEvent("", "employees", employee));
public boolean fireEmployee(TcKimlikNo identity) {
var employee = employeeRepository.findByIdentity(identity);
if (employee.isEmpty()) return false;
Employee emp = employee.get();
employeeRepository.remove(emp);
eventPushlisher.publishEvent(new EmployeeFiredEvent("1", "employees", emp));
return true;
}

}
2 changes: 1 addition & 1 deletion hr-domain/src/com/example/hr/domain/Employee.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public Employee(TcKimlikNo identityNo, FullName fullname, Money salary, Iban iba
this.department = department;
}

public Employee(Builder builder) {
private Employee(Builder builder) {
this.identityNo = builder.identityNo;
this.fullname = builder.fullname;
this.salary = builder.salary;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@

import static org.junit.Assert.assertTrue;

import java.util.Optional;

import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

import com.example.hr.domain.Department;
import com.example.hr.domain.Employee;
import com.example.hr.domain.MoneyCurrency;
import com.example.hr.domain.TcKimlikNo;
import com.example.hr.events.EmployeeFiredEvent;
import com.example.hr.events.EmployeeHiredEvent;
import com.example.hr.infrastructure.EventPushlisher;
import com.example.hr.repository.EmployeeRepository;
Expand Down Expand Up @@ -42,12 +46,37 @@ void hireEmployee_success() {
.getBytes())
.build();
Mockito.doNothing().when(empRepo).save(jack);
Mockito.doNothing().when(eventPublisher).publishEvent(new EmployeeHiredEvent("", "employees", jack));
Mockito.doNothing().when(eventPublisher).publishEvent(new EmployeeHiredEvent("1", "employees", jack));
// 2. call exercise method
var success = app.hireEmployee(jack);
// 3. Verification
assertTrue(success);
// 4. destroy setup
}

@Test
void fireEmployee_success() {
// 1. test setup / fixture
SimpleEmployeeApplication app = new SimpleEmployeeApplication();
EmployeeRepository empRepo = Mockito.mock(EmployeeRepository.class);
EventPushlisher eventPublisher = Mockito.mock(EventPushlisher.class);
app.setEmployeeRepository(empRepo);
app.setEventPushlisher(eventPublisher);
System.out.println(empRepo.getClass());
Employee jack = new Employee.Builder("40310900232").fullname("jack", "bauer").birthYear(1956)
.salary(100_000, MoneyCurrency.USD).iban("TR820006235455781668847562").fulltime(true)
.department(Department.IT)
.photo("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"
.getBytes())
.build();
Mockito.doNothing().when(empRepo).remove(jack);
Mockito.when(empRepo.findByIdentity(TcKimlikNo.of("40310900232"))).thenReturn(Optional.of(jack));
Mockito.doNothing().when(eventPublisher).publishEvent(new EmployeeFiredEvent("2", "employees", jack));
// 2. call exercise method
var success = app.fireEmployee(TcKimlikNo.of("40310900232"));
// 3. Verification
assertTrue(success);
// 4. destroy setup
}

}

0 comments on commit b8a0c6c

Please sign in to comment.