| 
 | 1 | +package g3601_3700.s3642_find_books_with_polarized_opinions;  | 
 | 2 | + | 
 | 3 | +import static org.hamcrest.CoreMatchers.equalTo;  | 
 | 4 | +import static org.hamcrest.MatcherAssert.assertThat;  | 
 | 5 | + | 
 | 6 | +import java.io.BufferedReader;  | 
 | 7 | +import java.io.FileNotFoundException;  | 
 | 8 | +import java.io.FileReader;  | 
 | 9 | +import java.sql.Connection;  | 
 | 10 | +import java.sql.ResultSet;  | 
 | 11 | +import java.sql.SQLException;  | 
 | 12 | +import java.sql.Statement;  | 
 | 13 | +import java.util.stream.Collectors;  | 
 | 14 | +import javax.sql.DataSource;  | 
 | 15 | +import org.junit.jupiter.api.Test;  | 
 | 16 | +import org.zapodot.junit.db.annotations.EmbeddedDatabase;  | 
 | 17 | +import org.zapodot.junit.db.annotations.EmbeddedDatabaseTest;  | 
 | 18 | +import org.zapodot.junit.db.common.CompatibilityMode;  | 
 | 19 | + | 
 | 20 | +@EmbeddedDatabaseTest(  | 
 | 21 | + compatibilityMode = CompatibilityMode.MySQL,  | 
 | 22 | + initialSqls =  | 
 | 23 | + "CREATE TABLE books ("  | 
 | 24 | + + " book_id INT PRIMARY KEY,"  | 
 | 25 | + + " title VARCHAR(255),"  | 
 | 26 | + + " author VARCHAR(255),"  | 
 | 27 | + + " genre VARCHAR(50),"  | 
 | 28 | + + " pages INT"  | 
 | 29 | + + ");"  | 
 | 30 | + + "INSERT INTO books (book_id, title, author, genre, pages) VALUES"  | 
 | 31 | + + "(1, 'The Great Gatsby', 'F. Scott', 'Fiction', 180),"  | 
 | 32 | + + "(2, 'To Kill a Mockingbird', 'Harper Lee', 'Fiction', 281),"  | 
 | 33 | + + "(3, '1984', 'George Orwell', 'Dystopian', 328),"  | 
 | 34 | + + "(4, 'Pride and Prejudice', 'Jane Austen', 'Romance', 432),"  | 
 | 35 | + + "(5, 'The Catcher in the Rye', 'J.D. Salinger', 'Fiction', 277);"  | 
 | 36 | + + "CREATE TABLE reading_sessions ("  | 
 | 37 | + + " session_id INT PRIMARY KEY,"  | 
 | 38 | + + " book_id INT,"  | 
 | 39 | + + " reader_name VARCHAR(100),"  | 
 | 40 | + + " pages_read INT,"  | 
 | 41 | + + " session_rating INT,"  | 
 | 42 | + + " FOREIGN KEY (book_id) REFERENCES books(book_id)"  | 
 | 43 | + + ");"  | 
 | 44 | + + "INSERT INTO reading_sessions (session_id, book_id, "  | 
 | 45 | + + "reader_name, pages_read, session_rating) VALUES"  | 
 | 46 | + + "(1, 1, 'Alice', 50, 5),"  | 
 | 47 | + + "(2, 1, 'Bob', 60, 1),"  | 
 | 48 | + + "(3, 1, 'Carol', 40, 4),"  | 
 | 49 | + + "(4, 1, 'David', 30, 2),"  | 
 | 50 | + + "(5, 1, 'Emma', 45, 5),"  | 
 | 51 | + + "(6, 2, 'Frank', 80, 4),"  | 
 | 52 | + + "(7, 2, 'Grace', 70, 4),"  | 
 | 53 | + + "(8, 2, 'Henry', 90, 5),"  | 
 | 54 | + + "(9, 2, 'Ivy', 60, 4),"  | 
 | 55 | + + "(10, 2, 'Jack', 75, 4),"  | 
 | 56 | + + "(11, 3, 'Kate', 100, 2),"  | 
 | 57 | + + "(12, 3, 'Liam', 120, 1),"  | 
 | 58 | + + "(13, 3, 'Mia', 80, 2),"  | 
 | 59 | + + "(14, 3, 'Noah', 90, 1),"  | 
 | 60 | + + "(15, 3, 'Olivia', 110, 4),"  | 
 | 61 | + + "(16, 3, 'Paul', 95, 5),"  | 
 | 62 | + + "(17, 4, 'Quinn', 150, 3),"  | 
 | 63 | + + "(18, 4, 'Ruby', 140, 3),"  | 
 | 64 | + + "(19, 5, 'Sam', 80, 1),"  | 
 | 65 | + + "(20, 5, 'Tara', 70, 2);")  | 
 | 66 | +class MysqlTest {  | 
 | 67 | + @Test  | 
 | 68 | + void testScript(@EmbeddedDatabase DataSource dataSource)  | 
 | 69 | + throws SQLException, FileNotFoundException {  | 
 | 70 | + try (final Connection connection = dataSource.getConnection()) {  | 
 | 71 | + try (final Statement statement = connection.createStatement();  | 
 | 72 | + final ResultSet resultSet =  | 
 | 73 | + statement.executeQuery(  | 
 | 74 | + new BufferedReader(  | 
 | 75 | + new FileReader(  | 
 | 76 | + "src/main/java/g3601_3700/"  | 
 | 77 | + + "s3642_find_books_with_"  | 
 | 78 | + + "polarized_opinions/"  | 
 | 79 | + + "script.sql"))  | 
 | 80 | + .lines()  | 
 | 81 | + .collect(Collectors.joining("\n"))  | 
 | 82 | + .replaceAll("#.*?\\r?\\n", ""))) {  | 
 | 83 | + assertThat(resultSet.next(), equalTo(true));  | 
 | 84 | + assertThat(resultSet.getNString(1), equalTo("1"));  | 
 | 85 | + assertThat(resultSet.getNString(2), equalTo("The Great Gatsby"));  | 
 | 86 | + assertThat(resultSet.getNString(3), equalTo("F. Scott"));  | 
 | 87 | + assertThat(resultSet.getNString(4), equalTo("Fiction"));  | 
 | 88 | + assertThat(resultSet.getNString(5), equalTo("180"));  | 
 | 89 | + assertThat(resultSet.getNString(6), equalTo("4"));  | 
 | 90 | + assertThat(resultSet.getNString(7), equalTo("1.00"));  | 
 | 91 | + assertThat(resultSet.next(), equalTo(true));  | 
 | 92 | + assertThat(resultSet.getNString(1), equalTo("3"));  | 
 | 93 | + assertThat(resultSet.getNString(2), equalTo("1984"));  | 
 | 94 | + assertThat(resultSet.getNString(3), equalTo("George Orwell"));  | 
 | 95 | + assertThat(resultSet.getNString(4), equalTo("Dystopian"));  | 
 | 96 | + assertThat(resultSet.getNString(5), equalTo("328"));  | 
 | 97 | + assertThat(resultSet.getNString(6), equalTo("4"));  | 
 | 98 | + assertThat(resultSet.getNString(7), equalTo("1.00"));  | 
 | 99 | + assertThat(resultSet.next(), equalTo(false));  | 
 | 100 | + }  | 
 | 101 | + }  | 
 | 102 | + }  | 
 | 103 | +}  | 
0 commit comments