package com.example.web;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class SessionTodoStoreTest {
    @Test void crudKeepsIdAndSnapshotsStable() {
        SessionTodoStore store=new SessionTodoStore();
        Todo original=store.create("Learn Servlets",false);
        var snapshot=store.list();
        Todo updated=store.update(original.getId(),"Learn JSP",true).orElseThrow();
        assertEquals(original.getId(),updated.getId()); assertTrue(updated.isCompleted());
        assertEquals("Learn Servlets",snapshot.get(0).getTitle());
        assertTrue(store.delete(original.getId())); assertTrue(store.find(original.getId()).isEmpty());
    }
    @Test void missingUpdateCannotCreateAndStoresAreIndependent() {
        SessionTodoStore alice=new SessionTodoStore(),bob=new SessionTodoStore();
        Todo task=alice.create("Alice task",false);
        assertTrue(bob.find(task.getId()).isEmpty());
        assertTrue(bob.update(task.getId(),"Changed",true).isEmpty());
        assertTrue(bob.list().isEmpty()); assertEquals("Alice task",alice.find(task.getId()).orElseThrow().getTitle());
    }
}
