@@ -1116,6 +1116,79 @@ mod tests {
1116
1116
assert_document_integrity ( & doc) ;
1117
1117
}
1118
1118
1119
+ #[ test]
1120
+ fn comment_at_begin ( ) {
1121
+ let path = PgTPath :: new ( "test.sql" ) ;
1122
+
1123
+ let mut doc = Document :: new (
1124
+ path. clone ( ) ,
1125
+ "-- Add new schema named \" private\" \n CREATE SCHEMA \" private\" ;" . to_string ( ) ,
1126
+ 0 ,
1127
+ ) ;
1128
+
1129
+ let change = ChangeFileParams {
1130
+ path : path. clone ( ) ,
1131
+ version : 1 ,
1132
+ changes : vec ! [ ChangeParams {
1133
+ text: "" . to_string( ) ,
1134
+ range: Some ( TextRange :: new( 0 . into( ) , 1 . into( ) ) ) ,
1135
+ } ] ,
1136
+ } ;
1137
+
1138
+ let changed = doc. apply_file_change ( & change) ;
1139
+
1140
+ assert_eq ! (
1141
+ doc. content,
1142
+ "- Add new schema named \" private\" \n CREATE SCHEMA \" private\" ;"
1143
+ ) ;
1144
+
1145
+ assert_eq ! ( changed. len( ) , 3 ) ;
1146
+ assert ! ( matches!(
1147
+ changed[ 0 ] ,
1148
+ StatementChange :: Deleted ( Statement { id: 0 , .. } )
1149
+ ) ) ;
1150
+ assert ! ( matches!(
1151
+ changed[ 1 ] ,
1152
+ StatementChange :: Added ( AddedStatement { .. } )
1153
+ ) ) ;
1154
+ assert ! ( matches!(
1155
+ changed[ 2 ] ,
1156
+ StatementChange :: Added ( AddedStatement { .. } )
1157
+ ) ) ;
1158
+
1159
+ let change_2 = ChangeFileParams {
1160
+ path : path. clone ( ) ,
1161
+ version : 2 ,
1162
+ changes : vec ! [ ChangeParams {
1163
+ text: "-" . to_string( ) ,
1164
+ range: Some ( TextRange :: new( 0 . into( ) , 0 . into( ) ) ) ,
1165
+ } ] ,
1166
+ } ;
1167
+
1168
+ let changed_2 = doc. apply_file_change ( & change_2) ;
1169
+
1170
+ assert_eq ! (
1171
+ doc. content,
1172
+ "-- Add new schema named \" private\" \n CREATE SCHEMA \" private\" ;"
1173
+ ) ;
1174
+
1175
+ assert_eq ! ( changed_2. len( ) , 3 ) ;
1176
+ assert ! ( matches!(
1177
+ changed_2[ 0 ] ,
1178
+ StatementChange :: Deleted ( Statement { .. } )
1179
+ ) ) ;
1180
+ assert ! ( matches!(
1181
+ changed_2[ 1 ] ,
1182
+ StatementChange :: Deleted ( Statement { .. } )
1183
+ ) ) ;
1184
+ assert ! ( matches!(
1185
+ changed_2[ 2 ] ,
1186
+ StatementChange :: Added ( AddedStatement { .. } )
1187
+ ) ) ;
1188
+
1189
+ assert_document_integrity ( & doc) ;
1190
+ }
1191
+
1119
1192
#[ test]
1120
1193
fn apply_changes_within_statement ( ) {
1121
1194
let input = "select id from users;\n select * from contacts;" ;
0 commit comments