eng
competition

Text Practice Mode

Rust Programming Language Sample Code

created Jun 10th 2023, 08:04 by cryarchy


1


Rating

149 words
19 completed
00:00
use serde::Deserialize;
use validator::Validate;
 
use helpers::is_object_id;
 
#[derive(Debug, Deserialize, Validate)]
#[serde(rename_all = "camelCase")]
pub struct ICreateMaterialSpecification {
  #[validate(required)]
  pub name: Option<String>,
  #[validate(required, custom = "is_object_id")]
  pub added_by: Option<String>,
}
 
#[cfg(test)]
mod tests {
  use super::*;
  use helpers::{has_error, VError};
  use mongodb::bson::oid::ObjectId;
 
  #[test]
  fn name_is_required() {
    let company_data = ICreateMaterialSpecification {
      name: None,
      added_by: Some(ObjectId::new().to_hex()),
    };
    let result = company_data.validate();
    let v_error = VError {
      code: "required",
      message: None,
    };
    let error_found = has_error(&result, "name", &v_error);
    assert!(error_found);
  }
 
  #[test]
  fn added_by_is_required() {
    let company_data = ICreateMaterialSpecification {
      name: None,
      added_by: None,
    };
    let result = company_data.validate();
    let v_error = VError {
      code: "required",
      message: None,
    };
    let error_found = has_error(&result, "added_by", &v_error);
    assert!(error_found);
  }
 
  #[test]
  fn added_by_is_an_object_id() {
    let company_data = ICreateMaterialSpecification {
      name: None,
      added_by: Some(String::from("invalid id")),
    };
    let result = company_data.validate();
    let v_error = VError {
      code: "object_id",
      message: None,
    };
    let error_found = has_error(&result, "added_by", &v_error);
    assert!(error_found);
  }
}

saving score / loading statistics ...