Skip to content

Commit

Permalink
test: add integration test for config
Browse files Browse the repository at this point in the history
  • Loading branch information
ryota-sakamoto committed Oct 17, 2023
1 parent 9f58756 commit e4e745f
Showing 1 changed file with 101 additions and 0 deletions.
101 changes: 101 additions & 0 deletions tests/config.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

pub mod util;

use assert_cmd::prelude::*; // Add methods on commands

#[tokio::test]
async fn test_config_dump() -> Result<(), Box<dyn std::error::Error>> {
let mut tm = util::setup_with_lock().await?;

let mut c = tm.command()?;
let cmd = c.args(&["config", "clear"]);
cmd.assert().success();

let table_name = tm.create_temporary_table("pk", None).await?;
assert_config_use_dump(&tm, table_name).await?;

Ok(())
}

#[tokio::test]
async fn test_config_clear() -> Result<(), Box<dyn std::error::Error>> {
let mut tm = util::setup_with_lock().await?;

let mut c = tm.command()?;
let cmd = c.args(&["config", "clear"]);
cmd.assert().success();

let table_name = tm.create_temporary_table("pk", None).await?;
assert_config_use_dump(&tm, table_name).await?;

let mut c = tm.command()?;
let cmd = c.args(&["config", "clear"]);
cmd.assert().success();

let mut c = tm.command()?;
let cmd = c.args(&["config", "dump"]);
cmd.assert().success().stdout(
"---
tables: ~
---
using_region: ~
using_table: ~
using_port: ~
",
);

Ok(())
}

async fn assert_config_use_dump(
tm: &util::TestManager<'_>,
table_name: String,
) -> Result<(), Box<dyn std::error::Error>> {
let mut c = tm.command()?;
let cmd = c.args(&["--region", "local", "use", &table_name]);
cmd.assert().success().stdout(format!(
"Now you're using the table '{table_name}' (local).\n"
));

let mut c = tm.command()?;
let cmd = c.args(&["config", "dump"]);
cmd.assert().success().stdout(format!(
"---
tables:
local/{table_name}:
region: local
name: {table_name}
pk:
name: pk
kind: S
sk: ~
indexes: ~
mode: OnDemand
---
using_region: local
using_table: {table_name}
using_port: 8000
"
));

Ok(())
}

0 comments on commit e4e745f

Please sign in to comment.