full crud + test