Reputation: 1
so this is mock db test which has this error
#[actix_web::test]
async fn create_team_success() {
Config::load_test_config();
let uuid = uuid::Uuid::new_v4();
let example_user = users::Model {
id: uuid,
username: "Salieri".to_string(),
email: "[email protected]".to_string(),
created_at: Default::default(),
team_name: None,
permissions: None,
is_leader: false,
password: None,
};
let database = MockDatabase::new(DatabaseBackend::Postgres)
.append_query_results(vec![vec![example_user.clone()]])
.append_query_results(vec![Vec::<teams::Model>::new()])
.append_query_results(vec![vec![example_user.clone()]])
.append_query_results(vec![vec![example_user]])
.append_query_results(vec![Vec::<teams::Model>::new()])
.append_exec_results([sea_orm::MockExecResult {
last_insert_id: 15,
rows_affected: 1,
}])
.append_exec_results([sea_orm::MockExecResult {
last_insert_id: 15,
rows_affected: 1,
}])
.into_connection();
let app = test::init_service(
App::new()
.app_data(Data::new(AppState::with_database(database)))
.service(scope("/teams").configure(routes::teams::config)),
)
.await;
let create_team_payload = json!({
"team_name": "Dziengiel".to_string(),
});
let access_token = encode_jwt(uuid, "[email protected]".to_string(), Duration::minutes(10));
let request = test::TestRequest::post()
.uri("/teams/manage/create_team")
.set_json(&create_team_payload)
.insert_header((
header::COOKIE,
format!("access_token={}", access_token.unwrap()),
))
.to_request();
let response = test::call_service(&app, request).await;
// panic!("{:?}", response.into_body());
assert_eq!(response.status(), 200);
}
it calls endpoint which basically calls this method of teams model
pub async fn create_team(
database: &DatabaseConnection,
create_team_json: CreateTeamModel,
claim_data: Claims,
) -> Result<(), Error> {
let user = users::Entity::find_by_id(claim_data.id)
.one(database)
.await?
.ok_or(Error::Unauthorized)?;
if let Some(team_name) = user.team_name {
return Err(Error::Team(UserAlreadyBelongsToTeam { team_name }));
}
if teams::Entity::find()
.filter(teams::Column::Name.eq(&create_team_json.team_name))
.one(database)
.await?
.is_some()
{
return Err(Error::Team(AlreadyExists));
}
let transaction = database.begin().await?;
let team_name = create_team_json.team_name;
//error occurs here
teams::Entity::insert(teams::ActiveModel {
name: Set(team_name.clone()),
..Default::default()
})
.exec(&transaction)
.await?;
let mut active_user: users::ActiveModel = user.into();
active_user.team_name = Set(Some(team_name.clone()));
active_user.is_leader = Set(true);
active_user.update(&transaction).await?;
transaction.commit().await?;
Ok(())
}
error this occurs in insertion of new team (i put comment there) (i cant put images directly due to too low rep so here is link)
i tried removing autoincrement from this column and it made tests pass without this error with insertion hardsetting value instead of making it default didn't fix it
if you want to see all of code like migrations or other entities here is link to repo
Upvotes: 0
Views: 27