use serde_json::json;

use crate::common::Server;

#[actix_rt::test]
async fn set_and_reset_distinct_attribute() {
    let server = Server::new().await;
    let index = server.index("test");

    let (_response, _code) = index.update_settings(json!({ "distinctAttribute": "test"})).await;
    index.wait_task(0).await;

    let (response, _) = index.settings().await;

    assert_eq!(response["distinctAttribute"], "test");

    index.update_settings(json!({ "distinctAttribute": null })).await;

    index.wait_task(1).await;

    let (response, _) = index.settings().await;

    assert_eq!(response["distinctAttribute"], json!(null));
}

#[actix_rt::test]
async fn set_and_reset_distinct_attribute_with_dedicated_route() {
    let server = Server::new().await;
    let index = server.index("test");

    let (_response, _code) = index.update_distinct_attribute(json!("test")).await;
    index.wait_task(0).await;

    let (response, _) = index.get_distinct_attribute().await;

    assert_eq!(response, "test");

    index.update_distinct_attribute(json!(null)).await;

    index.wait_task(1).await;

    let (response, _) = index.get_distinct_attribute().await;

    assert_eq!(response, json!(null));
}