package at.ac.tuwien.sepm.assignment.groupphase.operation;

import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.OperationDAO;
import static junit.framework.TestCase.fail;
import static org.hamcrest.CoreMatchers.is;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.EmployeeDAO;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.OperationService;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.OperationServiceImpl;
import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException;
import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationException;
import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException;
import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;
import java.time.Instant;
import java.time.LocalDate;
import org.junit.Assert;
import org.junit.Test;

public class OperationServiceTest {
    private final OperationDAO operationDAO = mock(OperationDAO.class);
    private final OperationService operationService = new OperationServiceImpl();

    @Test
    public void addOperationTest() {
        Operation operation =
                Operation.builder()
                        .status(Status.ACTIVE)
                        .opCode("ALP-95E7")
                        .created(Instant.now())
                        .destination("Wiedner Hauptstraße 35, Wien")
                        .additionalInfo("HTU Wien")
                        .severity(Severity.B)
                        .build();
        try{
            Assert.assertThat(operationService.add(operation), is(1L));
        } catch (InvalidOperationException | ServiceException e) {
            fail();
        }
    }
}