parent
fb9ee07cbe
commit
7f9af282a3
@ -0,0 +1,162 @@
|
|||||||
|
package space.kklochko.jdbc_hospital_example.cli.commands
|
||||||
|
|
||||||
|
import groovy.sql.Sql
|
||||||
|
import space.kklochko.jdbc_hospital_example.cli.commands.factories.CommandFactory
|
||||||
|
import space.kklochko.jdbc_hospital_example.config.factories.LoadDataBaseConfigFromEnvFile
|
||||||
|
import space.kklochko.jdbc_hospital_example.config.models.DataBaseConfig
|
||||||
|
import space.kklochko.jdbc_hospital_example.db.factories.DataBaseConnection
|
||||||
|
import space.kklochko.jdbc_hospital_example.db.repositories.DepartmentRepository
|
||||||
|
import space.kklochko.jdbc_hospital_example.db.repositories.IndicatorRepository
|
||||||
|
import space.kklochko.jdbc_hospital_example.db.repositories.PatientRepository
|
||||||
|
import space.kklochko.jdbc_hospital_example.models.Indicator
|
||||||
|
import spock.lang.Shared
|
||||||
|
import spock.lang.Specification
|
||||||
|
import spock.lang.Stepwise
|
||||||
|
import spock.lang.Subject
|
||||||
|
|
||||||
|
import java.sql.Timestamp
|
||||||
|
|
||||||
|
@Stepwise
|
||||||
|
class CommandEntitySpec extends Specification {
|
||||||
|
@Shared
|
||||||
|
Sql sql
|
||||||
|
|
||||||
|
@Shared
|
||||||
|
DataBaseConfig db
|
||||||
|
|
||||||
|
@Shared
|
||||||
|
DataBaseConnection dbc
|
||||||
|
|
||||||
|
def setupSpec() {
|
||||||
|
db = (new LoadDataBaseConfigFromEnvFile()).load("db.testing")
|
||||||
|
dbc = new DataBaseConnection(db)
|
||||||
|
|
||||||
|
IndicatorRepository repo = new IndicatorRepository(dbc)
|
||||||
|
repo.createTable()
|
||||||
|
|
||||||
|
sql = Sql.newInstance(db.getUrl(), db.getProperties().get("user"), db.getProperties().get("password"))
|
||||||
|
}
|
||||||
|
|
||||||
|
def "Test insert commands"() {
|
||||||
|
given: "I have a command data"
|
||||||
|
CommandData data = new CommandData("insert", datatype, values)
|
||||||
|
UUID id = UUID.fromString(data.arguments.get("id"))
|
||||||
|
|
||||||
|
and: "I have factory for the command"
|
||||||
|
CommandFactory factory = new CommandFactory()
|
||||||
|
@Subject
|
||||||
|
CommandEntity command = factory.create(data, repository)
|
||||||
|
|
||||||
|
when: "The command is executed"
|
||||||
|
def result = command.run()
|
||||||
|
|
||||||
|
then: "checking that the insert was successful"
|
||||||
|
result
|
||||||
|
id
|
||||||
|
|
||||||
|
and: "checking that the entry is added"
|
||||||
|
def isExist = sql.firstRow(verifyStatement, id)
|
||||||
|
isExist
|
||||||
|
|
||||||
|
cleanup: "remove the data"
|
||||||
|
sql.execute("delete from " + datatype + "s")
|
||||||
|
|
||||||
|
where:
|
||||||
|
datatype | values | repository || verifyStatement
|
||||||
|
"indicator" | ["id": "3b3f62f4-75b4-11ee-99cb-c0e4349366ab",
|
||||||
|
"type": "blood, blood",
|
||||||
|
"values": "Good samples.",
|
||||||
|
"timestamp": "2023-10-17 14:30:00"] | new IndicatorRepository(dbc) || "SELECT type FROM indicators WHERE id = ?"
|
||||||
|
"patient" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366bb",
|
||||||
|
"name": "Oleh",
|
||||||
|
"age": "21",
|
||||||
|
"phone": "380123451234"] | new PatientRepository(dbc) || "SELECT name FROM patients WHERE id = ?"
|
||||||
|
"department" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366cb",
|
||||||
|
"name": "First department",
|
||||||
|
"location": "Stepan Bandera Street",
|
||||||
|
"phone": "380123451244"] | new DepartmentRepository(dbc) || "SELECT name FROM departments WHERE id = ?"
|
||||||
|
}
|
||||||
|
|
||||||
|
def "Test update commands"() {
|
||||||
|
given: "I have a command data"
|
||||||
|
CommandData data = new CommandData("update", datatype, values)
|
||||||
|
UUID id = UUID.fromString(data.arguments.get("id"))
|
||||||
|
|
||||||
|
and: "I have a fixture"
|
||||||
|
sql.execute(fixture)
|
||||||
|
|
||||||
|
and: "I have factory for the command"
|
||||||
|
CommandFactory factory = new CommandFactory()
|
||||||
|
@Subject
|
||||||
|
CommandEntity command = factory.create(data, repository)
|
||||||
|
|
||||||
|
when: "The command is executed"
|
||||||
|
def result = command.run()
|
||||||
|
|
||||||
|
then: "checking that the insert was successful"
|
||||||
|
result
|
||||||
|
id
|
||||||
|
|
||||||
|
and: "checking that the entry is added"
|
||||||
|
def isExist = sql.firstRow(verifyStatement, id)
|
||||||
|
isExist
|
||||||
|
|
||||||
|
cleanup: "remove the data"
|
||||||
|
sql.execute("delete from " + datatype + "s")
|
||||||
|
|
||||||
|
where:
|
||||||
|
datatype | values | fixture | repository || verifyStatement
|
||||||
|
"indicator" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366ab",
|
||||||
|
"type": "blood, blood",
|
||||||
|
"values": "Good samples.",
|
||||||
|
"timestamp": "2023-10-17 14:30:00"] | "insert into indicators values ('bcbbcdb4-702c-11ee-9113-c0e4349366ab', 'Samples', 'fine', '2023-10-17 16:30:00')"
|
||||||
|
| new IndicatorRepository(dbc) || "SELECT type FROM indicators WHERE id = ? AND type='blood, blood'"
|
||||||
|
"patient" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366bb",
|
||||||
|
"name": "Oleh",
|
||||||
|
"age": "21",
|
||||||
|
"phone": "380123451234"] | "insert into patients values ('bcbbcdb4-702c-11ee-9113-c0e4349366bb', 'Maybe Oleh', 22, '380123451234')"
|
||||||
|
| new PatientRepository(dbc) || "SELECT name FROM patients WHERE id = ? AND name='Oleh'"
|
||||||
|
"department" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366cb",
|
||||||
|
"name": "First department",
|
||||||
|
"location": "Stepan Bandera Street",
|
||||||
|
"phone": "380123451244"] | "insert into departments values ('bcbbcdb4-702c-11ee-9113-c0e4349366cb', 'Second department', 'Stepan Bandera Street', '380123451244')"
|
||||||
|
| new DepartmentRepository(dbc) || "SELECT name FROM departments WHERE id = ? AND name='First department'"
|
||||||
|
}
|
||||||
|
|
||||||
|
def "Test delete commands"() {
|
||||||
|
given: "I have a command data"
|
||||||
|
CommandData data = new CommandData("remove", datatype, values)
|
||||||
|
UUID id = UUID.fromString(data.arguments.get("id"))
|
||||||
|
|
||||||
|
and: "I have a fixture"
|
||||||
|
sql.execute(fixture)
|
||||||
|
|
||||||
|
and: "I have factory for the command"
|
||||||
|
CommandFactory factory = new CommandFactory()
|
||||||
|
@Subject
|
||||||
|
CommandEntity command = factory.create(data, repository)
|
||||||
|
|
||||||
|
when: "The command is executed"
|
||||||
|
def result = command.run()
|
||||||
|
|
||||||
|
then: "checking that the insert was successful"
|
||||||
|
result
|
||||||
|
id
|
||||||
|
|
||||||
|
and: "checking that the entry is added"
|
||||||
|
def isExist = sql.firstRow(verifyStatement, id)
|
||||||
|
!isExist
|
||||||
|
|
||||||
|
cleanup: "remove the data"
|
||||||
|
sql.execute("delete from " + datatype + "s")
|
||||||
|
|
||||||
|
where:
|
||||||
|
datatype | values | fixture | repository || verifyStatement
|
||||||
|
"indicator" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366ab"] | "insert into indicators values ('bcbbcdb4-702c-11ee-9113-c0e4349366ab', 'Samples', 'fine', '2023-10-17 16:30:00')"
|
||||||
|
| new IndicatorRepository(dbc) || "SELECT type FROM indicators WHERE id = ?"
|
||||||
|
"patient" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366bb"] | "insert into patients values ('bcbbcdb4-702c-11ee-9113-c0e4349366bb', 'Maybe Oleh', 22, '380123451234')"
|
||||||
|
| new PatientRepository(dbc) || "SELECT name FROM patients WHERE id = ?"
|
||||||
|
"department" | ["id": "bcbbcdb4-702c-11ee-9113-c0e4349366cb"] | "insert into departments values ('bcbbcdb4-702c-11ee-9113-c0e4349366cb', 'Second department', 'Stepan Bandera Street', '380123451244')"
|
||||||
|
| new DepartmentRepository(dbc) || "SELECT name FROM departments WHERE id = ?"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue