Skip to content

Commit

Permalink
[#142] select query 테스트코드 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
myyrakle committed Jul 28, 2024
1 parent 932e70e commit c2da97a
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 88 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
- name: Set coverage env variable
run: |
echo "COVERAGE=$(cat coverage_total_percent.txt)" >> $GITHUB_ENV
echo "COVERAGE=$(head -n 1 coverage_total_percent.txt)" >> $GITHUB_ENV
- name: Clone html_reports repository
run: |
Expand Down
143 changes: 56 additions & 87 deletions src/parser/test/select.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ use crate::ast::dml::expressions::binary::BinaryOperatorExpression;
use crate::ast::dml::expressions::operators::BinaryOperator;
use crate::ast::dml::parts::_where::WhereClause;
use crate::ast::dml::parts::group_by::GroupByItem;
use crate::ast::dml::parts::having::HavingClause;
use crate::ast::dml::parts::join::{JoinClause, JoinType};
use crate::ast::dml::parts::order_by::{OrderByItem, OrderByNulls, OrderByType};
use crate::ast::dml::parts::select_item::{SelectItem, SelectWildCard};
Expand Down Expand Up @@ -1040,7 +1039,7 @@ fn test_select_query() {
SELECT
p.content as post
FROM post as p
GROUP BY p.content, p.user_id
GROUP BY p.content;
"#
.into(),
input: vec![
Expand All @@ -1059,10 +1058,7 @@ fn test_select_query() {
Token::Identifier("p".into()),
Token::Period,
Token::Identifier("content".into()),
Token::Comma,
Token::Identifier("p".into()),
Token::Period,
Token::Identifier("user_id".into()),
Token::SemiColon,
],
expected: SelectQuery::builder()
.add_select_item(
Expand All @@ -1079,39 +1075,24 @@ fn test_select_query() {
.add_group_by(GroupByItem {
item: SelectColumn::new(Some("p".into()), "content".into()),
})
.add_group_by(GroupByItem {
item: SelectColumn::new(Some("p".into()), "user_id".into()),
})
.build(),
want_error: false,
},
TestCase {
name: r#"
실패:
SELECT
COUNT(p.a),
p.b,
p.c
p.content as post
FROM post as p
GROUP BY p.b
GROUP BY p.content, p.user_id
"#
.into(),
input: vec![
Token::Select,
Token::Identifier("count".into()),
Token::LeftParentheses,
Token::Identifier("p".into()),
Token::Period,
Token::Identifier("a".into()),
Token::RightParentheses,
Token::Comma,
Token::Identifier("p".into()),
Token::Period,
Token::Identifier("b".into()),
Token::Comma,
Token::Identifier("p".into()),
Token::Period,
Token::Identifier("c".into()),
Token::Identifier("content".into()),
Token::As,
Token::Identifier("post".into()),
Token::From,
Token::Identifier("post".into()),
Token::As,
Expand All @@ -1120,10 +1101,32 @@ fn test_select_query() {
Token::By,
Token::Identifier("p".into()),
Token::Period,
Token::Identifier("b".into()),
Token::Identifier("content".into()),
Token::Comma,
Token::Identifier("p".into()),
Token::Period,
Token::Identifier("user_id".into()),
],
expected: Default::default(),
want_error: true,
expected: SelectQuery::builder()
.add_select_item(
SelectItem::builder()
.set_item(SelectColumn::new(Some("p".into()), "content".into()).into())
.set_alias("post".into())
.build(),
)
.set_from_table(TableName {
database_name: None,
table_name: "post".into(),
})
.set_from_alias("p".into())
.add_group_by(GroupByItem {
item: SelectColumn::new(Some("p".into()), "content".into()),
})
.add_group_by(GroupByItem {
item: SelectColumn::new(Some("p".into()), "user_id".into()),
})
.build(),
want_error: false,
},
TestCase {
name: r#"
Expand Down Expand Up @@ -1165,64 +1168,6 @@ fn test_select_query() {
expected: Default::default(),
want_error: true,
},
TestCase {
name: r#"
SELECT
p.content as post
FROM post as p
GROUP BY p.content
HAVING p.content = 'FOO'
"#
.into(),
input: vec![
Token::Select,
Token::Identifier("p".into()),
Token::Period,
Token::Identifier("content".into()),
Token::As,
Token::Identifier("post".into()),
Token::From,
Token::Identifier("post".into()),
Token::As,
Token::Identifier("p".into()),
Token::Group,
Token::By,
Token::Identifier("p".into()),
Token::Period,
Token::Identifier("content".into()),
Token::Having,
Token::Identifier("p".into()),
Token::Period,
Token::Identifier("content".into()),
Token::Operator(OperatorToken::Eq),
Token::String("FOO".into()),
],
expected: SelectQuery::builder()
.add_select_item(
SelectItem::builder()
.set_item(SelectColumn::new(Some("p".into()), "content".into()).into())
.set_alias("post".into())
.build(),
)
.set_from_table(TableName {
database_name: None,
table_name: "post".into(),
})
.set_from_alias("p".into())
.add_group_by(GroupByItem {
item: SelectColumn::new(Some("p".into()), "content".into()),
})
.set_having(HavingClause {
expression: BinaryOperatorExpression {
operator: BinaryOperator::Eq,
lhs: SelectColumn::new(Some("p".into()), "content".into()).into(),
rhs: SQLExpression::String("FOO".into()),
}
.into(),
})
.build(),
want_error: false,
},
TestCase {
name: r#"
SELECT
Expand Down Expand Up @@ -1463,6 +1408,30 @@ fn test_select_query() {
.build(),
want_error: false,
},
TestCase {
name: r#"실패: 빈 토큰"#.into(),
input: vec![],
expected: Default::default(),
want_error: true,
},
TestCase {
name: r#"실패: SELECT"#.into(),
input: vec![Token::Select],
expected: Default::default(),
want_error: true,
},
TestCase {
name: r#"실패: UPDATE"#.into(),
input: vec![Token::Update],
expected: Default::default(),
want_error: true,
},
TestCase {
name: r#"SELECT 1 WHERE"#.into(),
input: vec![Token::Select, Token::Integer(1), Token::Where],
expected: Default::default(),
want_error: true,
},
];

for t in test_cases {
Expand Down

0 comments on commit c2da97a

Please sign in to comment.