pub fn gen(_pascal: &str, snake: &str) -> String {
    format!(
        r#"mod common;

#[tokio::test]
#[ignore = "requires running database"]
async fn test_{snake}_index() {{
    let app = common::TestApp::boot().await;
    let res = app.client.get("/api/v1/{snake}s").await;
    res.assert_status(200);
}}

#[tokio::test]
#[ignore = "requires running database"]
async fn test_{snake}_show() {{
    let app = common::TestApp::boot().await;
    let res = app.client.get("/api/v1/{snake}s/1").await;
    res.assert_status(200);
}}

#[tokio::test]
#[ignore = "requires running database"]
async fn test_{snake}_store() {{
    let app = common::TestApp::boot().await;
    let res = app.client.post("/api/v1/{snake}s", serde_json::json!({{}})).await;
    res.assert_status(201);
}}

#[tokio::test]
#[ignore = "requires running database"]
async fn test_{snake}_update() {{
    let app = common::TestApp::boot().await;
    let res = app.client.put("/api/v1/{snake}s/1", serde_json::json!({{}})).await;
    res.assert_status(200);
}}

#[tokio::test]
#[ignore = "requires running database"]
async fn test_{snake}_destroy() {{
    let app = common::TestApp::boot().await;
    let res = app.client.delete("/api/v1/{snake}s/1").await;
    res.assert_status(204);
}}
"#
    )
}
