package com.example.todo;
import java.util.Optional;
import org.junit.jupiter.api.Test;
import org.springframework.web.server.ResponseStatusException;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
class TodoServiceTest {
    @Test void missingUpdateCannotInsert() {
        TodoRepository repo=mock(TodoRepository.class);
        when(repo.findById("missing")).thenReturn(Optional.empty());
        TodoService service=new TodoService(repo);
        assertEquals(404,assertThrows(ResponseStatusException.class,
            () -> service.update("missing","Task",false)).getStatusCode().value());
        verify(repo,never()).save(any());
    }
    @Test void createTrimsTitle() {
        TodoRepository repo=mock(TodoRepository.class);
        when(repo.save(any(Todo.class))).thenAnswer(i -> i.getArgument(0));
        Todo todo=new TodoService(repo).create("  Teach Spring  ",false);
        assertEquals("Teach Spring",todo.getTitle()); assertFalse(todo.isCompleted());
    }
}
