Skip to content

Commit

Permalink
playtest-dbのe2eを1つ通した
Browse files Browse the repository at this point in the history
  • Loading branch information
jnuank committed Nov 21, 2021
1 parent 61888d0 commit 9b53385
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 12 deletions.
16 changes: 14 additions & 2 deletions e2e/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,13 +65,25 @@
<dependency>
<groupId>com.uzabase</groupId>
<artifactId>playtest-gauge-rest</artifactId>
<version>1.0.0-SNAPSHOT</version>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.uzabase</groupId>
<artifactId>playtest-json</artifactId>
<version>1.0.0</version>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.uzabase</groupId>
<artifactId>playtest-db</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
8 changes: 6 additions & 2 deletions e2e/specs/db/json_db.spec
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
# DBのテスト

* テスト用のスキーマ、テーブルを用意する

## クエリを指定して、一意の値(文字列)を取得する
tags: unimplemented
* "schemaName"スキーマの"tableName"テーブルの、"columnName""whereString"で取得した一意の結果が文字列の"test"である
* "schemaName"スキーマの"tableName"テーブルの、"id""bf9626ab-6ecd-4f15-be70-ac88fe4ba0f0"で取得した一意の"string_column"が文字列の"test"である

## クエリを指定して、一意の値(整数)を取得する
tags: unimplemented
* "schemaName"スキーマの"tableName"テーブルの、"columnName""whereString"で取得した一意の結果が整数の"test"である

___
* テスト用のスキーマ、テーブルを削除する
71 changes: 63 additions & 8 deletions e2e/src/test/kotlin/com/uzabase/Database.kt
Original file line number Diff line number Diff line change
@@ -1,24 +1,79 @@
package com.uzabase

import com.thoughtworks.gauge.Step
import com.uzabase.playtest.db.Table
import org.amshove.kluent.shouldBeEqualTo
import java.sql.Connection
import java.sql.DriverManager

class Database {
@Step("<schemaName>スキーマの<tableName>テーブルの、<columnName>を<whereString>で取得した一意の結果が文字列の<vale>である")
fun getStringParameterFromDatabase(schemaName: String, tableName: String, columnName: String, whereString: String, value: String) {
val query = """
class Database(
private val url: String = "jdbc:h2:mem:test;MODE=PostgreSQL;DB_CLOSE_DELAY=-1",
private val username: String = "sa",
private val password: String = "",
) {
@Step("<schemaName>スキーマの<tableName>テーブルの、<columnName>を<whereString>で取得した一意の<valueColumn>が文字列の<vale>である")
fun getStringParameterFromDatabase(
schemaName: String,
tableName: String,
columnName: String,
whereString: String,
valueColumn: String,
value: String
) {
val query = """
select $columnName from $schemaName.$tableName where $whereString;
""".trimIndent()
val result = TODO() //いい感じにSQLを実行する
value shouldBeEqualTo result
}
val result =
Table(url, username, password, schemaName, tableName).where(
columnName,
whereString
).first().column(valueColumn).value
value shouldBeEqualTo result
}

@Step("<schemaName>スキーマの<tableName>テーブルの、<columnName>を<whereString>で取得した一意の結果が整数の<vale>である")
fun getIntParameterFromDatabase(schemaName: String, tableName: String, columnName: String, whereString: String, value: Int) {
fun getIntParameterFromDatabase(
schemaName: String,
tableName: String,
columnName: String,
whereString: String,
value: Int
) {
val query = """
select $columnName from $schemaName.$tableName where $whereString;
""".trimIndent()
val result = TODO() //いい感じにSQLを実行する
value shouldBeEqualTo result
}

@Step("テスト用のスキーマ、テーブルを用意する")
fun setupTable() {
val test = this.javaClass
.classLoader
.getResourceAsStream("data.sql")
?.bufferedReader()
?.use { it.readText() }

println(test)

val conn: Connection =
DriverManager.getConnection(url, username, password)

conn.createStatement().execute(test)
}

@Step("テスト用のスキーマ、テーブルを削除する")
fun truncateTable() {
val test = this.javaClass
.classLoader
.getResourceAsStream("truncate.sql")
?.bufferedReader()
?.use { it.readText() }

println(test)
val conn: Connection =
DriverManager.getConnection(url, username, password)

conn.createStatement().execute(test)
}
}
9 changes: 9 additions & 0 deletions e2e/src/test/resources/data.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
CREATE SCHEMA IF NOT EXISTS schemaName;

CREATE TABLE IF NOT EXISTS schemaName.tableName
(
id UUID primary key,
string_column text
);

INSERT INTO schemaName.tableName VALUES ('bf9626ab-6ecd-4f15-be70-ac88fe4ba0f0', 'test');
1 change: 1 addition & 0 deletions e2e/src/test/resources/truncate.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
TRUNCATE TABLE schemaName.tableName

0 comments on commit 9b53385

Please sign in to comment.