Skip to content

Commit

Permalink
[#137] test_delete_query 테스트 코드 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
myyrakle committed Jul 26, 2024
1 parent 027e18b commit 75399d9
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/ast/dml/delete.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use crate::ast::{types::TableName, DMLStatement, SQLStatement};

use super::parts::{_where::WhereClause, target::UpdateTarget};

#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Default)]
pub struct DeleteQuery {
pub from_table: Option<UpdateTarget>,
pub where_clause: Option<WhereClause>,
Expand Down
55 changes: 52 additions & 3 deletions src/parser/test/delete.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ use crate::ast::dml::parts::_where::WhereClause;
use crate::ast::types::{SQLExpression, SelectColumn, TableName};
use crate::lexer::predule::OperatorToken;
use crate::lexer::tokens::Token;
use crate::parser::context::ParserContext;
use crate::parser::predule::Parser;

#[test]
Expand Down Expand Up @@ -66,12 +65,62 @@ pub fn test_delete_query() {
.build(),
want_error: false,
},
TestCase {
name: "성공: DELETE FROM foo.bar as f".into(),
input: vec![
Token::Delete,
Token::From,
Token::Identifier("foo".into()),
Token::Period,
Token::Identifier("bar".into()),
Token::As,
Token::Identifier("f".into()),
],
expected: DeleteQuery::builder()
.set_from_table(TableName {
database_name: Some("foo".into()),
table_name: "bar".into(),
})
.set_from_alias("f".into())
.build(),
want_error: false,
},
TestCase {
name: "실패: 토큰이 하나도 없음".into(),
input: vec![],
expected: Default::default(),
want_error: true,
},
TestCase {
name: "실패: DELETE가 아님".into(),
input: vec![Token::Select],
expected: Default::default(),
want_error: true,
},
TestCase {
name: "실패: DELETE밖에 없음".into(),
input: vec![Token::Delete],
expected: Default::default(),
want_error: true,
},
TestCase {
name: "실패: DELETE INTO".into(),
input: vec![Token::Delete, Token::Into],
expected: Default::default(),
want_error: true,
},
TestCase {
name: "실패: DELETE FROM".into(),
input: vec![Token::Delete, Token::From],
expected: Default::default(),
want_error: true,
},
];

for t in test_cases {
let mut parser = Parser::new(t.input);

let got = parser.parse(ParserContext::default());
let got = parser.handle_delete_query(Default::default());

assert_eq!(
got.is_err(),
Expand All @@ -83,7 +132,7 @@ pub fn test_delete_query() {
);

if let Ok(statements) = got {
assert_eq!(statements, vec![t.expected.into()], "TC: {}", t.name);
assert_eq!(statements, t.expected.into(), "TC: {}", t.name);
}
}
}

0 comments on commit 75399d9

Please sign in to comment.