|  | 
|  | 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