Merge pull request #589 from MarekSpodBiedry:issue-575
This commit is contained in:
commit
2d7988d057
|
|
@ -823,7 +823,7 @@ fn table_resize(s: &mut Session, p: &Json) -> Result<Json> {
|
|||
let sheet = cx.sheet_mut(si)?;
|
||||
let headers: Vec<String> = (r.start.col..=r.end.col).map(|c| sheet.value(CellRef::new(r.start.row, c)).display()).collect();
|
||||
let t = sheet.tables.get_mut(ti).ok_or_else(|| bad("table", "gone"))?;
|
||||
if r.start.row != t.range.start.row {
|
||||
if r.start.row != t.range.start.row || !r.intersects(&t.range) {
|
||||
return Err(EngineError::Other(
|
||||
"The headers must remain in the same row, and the resulting table range must overlap the original table range.".into(),
|
||||
));
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
use gridcraft_engine::Session;
|
||||
use serde_json::json;
|
||||
|
||||
fn table() -> Session {
|
||||
let mut s = Session::new();
|
||||
s.new_workbook();
|
||||
s.execute("range.setValues", json!({"range":"A1", "values":[["Item", "Qty"], ["x", "7"]]})).unwrap();
|
||||
s.execute("insert.table", json!({"range":"A1:B2", "header":true, "name":"T"})).unwrap();
|
||||
s
|
||||
}
|
||||
|
||||
fn table_range(s: &Session) -> String {
|
||||
s.doc().unwrap().wb.active().unwrap().tables[0].range.a1()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn resize_to_disjoint_range_is_rejected_and_keeps_table() {
|
||||
let mut s = table();
|
||||
assert!(s.execute("table.resize", json!({"table":"T", "range":"D1:E2"})).is_err());
|
||||
assert_eq!(table_range(&s), "A1:B2");
|
||||
assert_eq!(s.doc().unwrap().wb.active().unwrap().tables[0].columns[1].name, "Qty");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn resize_to_overlapping_range_still_works() {
|
||||
let mut s = table();
|
||||
s.execute("table.resize", json!({"table":"T", "range":"B1:C2"})).unwrap();
|
||||
assert_eq!(table_range(&s), "B1:C2");
|
||||
}
|
||||
Loading…
Reference in New Issue