cdrs 2.3.3

Cassandra DB driver written in Rust
Documentation
#[cfg(feature = "e2e-tests")]
#[macro_use]
extern crate cdrs;

mod common;

#[cfg(feature = "e2e-tests")]
use common::*;

#[cfg(feature = "e2e-tests")]
use cdrs::query::QueryExecutor;
#[cfg(feature = "e2e-tests")]
use cdrs::types::{AsRust, ByName, IntoRustByName};

#[cfg(feature = "e2e-tests")]
use std::str::FromStr;

#[test]
#[cfg(feature = "e2e-tests")]
fn query_values_in() {
  let cql = "CREATE TABLE IF NOT EXISTS cdrs_test.test_query_values_in \
             (id text PRIMARY KEY)";
  let session = setup(cql).expect("setup");

  session.query(cql).expect("create table error");

  let query_insert = "INSERT INTO cdrs_test.test_query_values_in \
                      (id) VALUES (?)";

  let items = vec!["1".to_string(), "2".to_string(), "3".to_string()];

  for item in items {
    let values = query_values!(item);
    session
      .query_with_values(query_insert, values)
      .expect("insert item error");
  }

  let cql = "SELECT * FROM cdrs_test.test_query_values_in WHERE id IN ?";
  let criteria = vec!["1".to_string(), "3".to_string()];

  let rows = session
    .query_with_values(cql, query_values!(criteria.clone()))
    .expect("select values query error")
    .get_body()
    .expect("get body error")
    .into_rows()
    .expect("converting into rows error");

  assert_eq!(rows.len(), criteria.len());

  let found_all_matching_criteria = criteria.iter().all(|criteria_item: &String| {
    rows.iter().any(|row| {
      let id: String = row.get_r_by_name("id").expect("id");

      criteria_item.clone() == id
    })
  });

  assert!(
    found_all_matching_criteria,
    "should find at least one element for each criteria"
  );
}