Tests complete

This commit is contained in:
2024-07-19 17:52:30 +01:00
parent 5bb6ccb789
commit 97773c7b01
16 changed files with 37 additions and 81 deletions

View File

@@ -1,4 +1,4 @@
package api package org.example.api
import com.google.gson.GsonBuilder import com.google.gson.GsonBuilder
import okhttp3.OkHttpClient import okhttp3.OkHttpClient

View File

@@ -1,6 +1,6 @@
package api package org.example.api
import model.* import org.example.model.*
import retrofit2.Response import retrofit2.Response
import retrofit2.http.* import retrofit2.http.*

View File

@@ -1,4 +1,4 @@
package model package org.example.model
data class AuthRequest( data class AuthRequest(
val username: String, val username: String,

View File

@@ -1,4 +1,4 @@
package model package org.example.model
data class AuthResponse ( data class AuthResponse (
val token: String val token: String

View File

@@ -1,4 +1,4 @@
package model package org.example.model
data class BookingIdResponse( data class BookingIdResponse(
val bookingid: Int val bookingid: Int

View File

@@ -1,4 +1,4 @@
package model package org.example.model
data class BookingRequest ( data class BookingRequest (
var firstname: String, var firstname: String,

View File

@@ -1,4 +1,4 @@
package model package org.example.model
data class BookingResponse( data class BookingResponse(

View File

@@ -1,4 +1,4 @@
package model package org.example.model
data class Bookingdates ( data class Bookingdates (
var checkin: String, var checkin: String,

View File

@@ -1,4 +1,4 @@
package model package org.example.model
data class CreateBookingResponse( data class CreateBookingResponse(
var bookingid: Int, var bookingid: Int,

View File

@@ -1,4 +1,4 @@
package model package org.example.model
data class UpdateBookingRequest( data class UpdateBookingRequest(
var firstname: String? = null, var firstname: String? = null,

View File

@@ -1,7 +1,7 @@
package storage package org.example.storage
import model.BookingResponse import org.example.model.BookingResponse
import model.Bookingdates import org.example.model.Bookingdates
class OrdersDatabase { class OrdersDatabase {
private val storage = mutableMapOf<Int, BookingResponse>() private val storage = mutableMapOf<Int, BookingResponse>()

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn"> <Configuration status="warn">
<Properties> <Properties>
<Property name="basePath">C:\\logs</Property> <Property name="basePath">Classpath</Property>
</Properties> </Properties>
<Appenders> <Appenders>
<RollingFile name="fileLogger" fileName="${basePath}/app-info.html" <RollingFile name="fileLogger" fileName="${basePath}/app-info.html"
@@ -17,7 +17,7 @@
</Console> </Console>
</Appenders> </Appenders>
<Loggers> <Loggers>
<Logger name="com.howtodoinjava" level="debug" additivity="false"> <Logger name="org.example" level="debug" additivity="false">
<appender-ref ref="fileLogger" level="debug" /> <appender-ref ref="fileLogger" level="debug" />
</Logger> </Logger>
<Root level="debug" additivity="false"> <Root level="debug" additivity="false">

View File

@@ -1,3 +1,5 @@
package org.example
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import retrofit2.Response import retrofit2.Response
import java.io.IOException import java.io.IOException

View File

@@ -1,22 +1,17 @@
import api.BookerApi package org.example
import api.RestfulBookerApi
import model.AuthRequest import org.example.api.BookerApi
import model.BookingRequest import org.example.api.RestfulBookerApi
import model.Bookingdates import org.example.model.AuthRequest
import model.UpdateBookingRequest import org.example.model.BookingRequest
import net.sf.jasperreports.engine.JasperCompileManager import org.example.model.Bookingdates
import net.sf.jasperreports.engine.JasperFillManager import org.example.model.UpdateBookingRequest
import net.sf.jasperreports.engine.JasperReport
import net.sf.jasperreports.engine.export.HtmlExporter
import net.sf.jasperreports.engine.util.JRSaver
import net.sf.jasperreports.export.SimpleHtmlExporterOutput
import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.LogManager
import org.apache.logging.log4j.message.MessageFormatMessage import org.apache.logging.log4j.message.MessageFormatMessage
import org.assertj.core.api.AssertionsForClassTypes.assertThat import org.assertj.core.api.AssertionsForClassTypes.assertThat
import org.junit.jupiter.api.* import org.junit.jupiter.api.*
import storage.OrdersDatabase import org.example.storage.OrdersDatabase
import utils.FileReader import org.example.utils.FileReader
import java.io.InputStream
import java.util.* import java.util.*
@@ -26,10 +21,7 @@ class Tests : NetworkTests() {
companion object { companion object {
private lateinit var bookerApi: RestfulBookerApi private lateinit var bookerApi: RestfulBookerApi
private val fileReader = FileReader() private val fileReader = FileReader()
private val logger = LogManager.getLogger("Test") private val logger = LogManager.getLogger(Tests::javaClass)
val bookingsReportStream: InputStream = javaClass.getResourceAsStream("/bookingsReport.jrxml")
val jasperReport: JasperReport = JasperCompileManager.compileReport(bookingsReportStream)
private val storage = OrdersDatabase() private val storage = OrdersDatabase()
@@ -49,8 +41,6 @@ class Tests : NetworkTests() {
@JvmStatic @JvmStatic
internal fun afterAll() { internal fun afterAll() {
storage.clearAllData() storage.clearAllData()
JRSaver.saveObject(jasperReport, "bookingReport.jasper");
} }
} }
@@ -89,13 +79,13 @@ class Tests : NetworkTests() {
/* /*
* Then * Then
*/ */
val bookingIds = responseUnwrap { bookerApi.getBookingIds() } val bookingIdsResponse = responseUnwrap { bookerApi.getBookingIds() }
assertThat(bookingIds.size) assertThat(bookingIdsResponse.size)
.withFailMessage("Did not find 3 bookings") .withFailMessage("Did not find 3 bookings")
.isGreaterThanOrEqualTo(3) .isGreaterThanOrEqualTo(3)
val bookingIds = bookingIdsResponse.map { it.bookingid }.joinToString()
JasperFillManager. logger.info("Available booking IDs: $bookingIds")
logger.trace("Available booking IDs: ${bookingIds.joinToString()}")
// Add the booking details and idea for later // Add the booking details and idea for later
bookingResponses.forEach { response -> bookingResponses.forEach { response ->
@@ -178,14 +168,14 @@ class Tests : NetworkTests() {
/* /*
* Then * Then
*/ */
logger.trace( logger.info(
MessageFormatMessage( MessageFormatMessage(
"Booking with ID: {0} has been updated to the following: {1}", "Booking with ID: {0} has been updated to the following: {1}",
orderIdTestOne, orderIdTestOne,
updateTestOneResponse updateTestOneResponse
) )
) )
logger.trace( logger.info(
MessageFormatMessage( MessageFormatMessage(
"Booking with ID: {0} has been updated to the following: {1}", "Booking with ID: {0} has been updated to the following: {1}",
orderIdTestTwo, orderIdTestTwo,
@@ -215,7 +205,7 @@ class Tests : NetworkTests() {
/* /*
* Then * Then
*/ */
logger.trace( logger.info(
MessageFormatMessage( MessageFormatMessage(
"Booking with ID: {0} has been delete and given the following response: {1}", "Booking with ID: {0} has been delete and given the following response: {1}",
idOfAny, idOfAny,
@@ -238,13 +228,5 @@ class Tests : NetworkTests() {
/* /*
* Then * Then
*/ */
val exporter = HtmlExporter()
// Set input ...
// Set input ...
exporter.exporterOutput = SimpleHtmlExporterOutput("bookingsReport.html")
exporter.exportReport()
} }
} }

View File

@@ -1,4 +1,4 @@
package utils package org.example.utils
import com.google.gson.Gson import com.google.gson.Gson
import java.io.BufferedReader import java.io.BufferedReader

View File

@@ -1,28 +0,0 @@
<jasperReport>
<field name="FIRST_NAME" class="java.lang.String"/>
<field name="LAST_NAME" class="java.lang.String"/>
<field name="SALARY" class="java.lang.Double"/>
<field name="ID" class="java.lang.Integer"/>
<detail>
<band height="51" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String">
<![CDATA[$F{FIRST_NAME}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String">
<![CDATA[$F{LAST_NAME}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="200" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String">
<![CDATA[$F{SALARY}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>