In this project I will be building a Springboot-api with a cassandra database. I will be testing the api with the use of testcontainers.
The project will be used for teaching others how to work with test containers.
Het doel is om een test line coverage van 85% te krijgen. Het bestand CoverageProfile.run.xml kun je importeren in je profile links bovenin in intellij En dan de testen aftrappen met de run with coverage optie. Dit is een play button met een schild. Dan verschijnt er op rechts een resultaat en moet de all folder 85% line coverage hebben. foto voor coverage en de knop
In dit project is het doel om alle api calls te testen. De volgende urls zijn aanwezig:
- /authors (GET,POST,PATCH, DELETE) en ?authorName=
- /books (GET,POST,PATCH, DELETE) en ?bookTitle=
- /countries (GET,POST,PATCH, DELETE) en ?countryName
- /gebruikers (GET,POST,PATCH, DELETE) en ?gebruikersnaam
- /genres (GET,POST,PATCH, DELETE) en ?genreName
- /language (GET,POST,PATCH, DELETE) en ?languageTitle
in de folder staat het database model database model
Voor GET all is een 200 met empty body de verwachting
Voor het filteren op de naam geld dat het een lijst met alle overeen komende entries terug geeft
Voor DELETE geld dat er een 202 terug komt
in de postgress folder staan 3 sql bestanden.
De insert.sql is het bestand dat de tabellen in de database plaatst.
Naast het gebruiken van de POST calls can je in de scripts folder sql bestanden plaatsen. Deze worden tijdens het
opstarten ingelezen.
Hierdoor is het mogelijk om gebruik te maken van je bestaande test database of een hele concrete dataset te
generen.
-
helper folder
- In de helper folder zet je stukjes code die op andere plekken verwarring opleveren
in mijn geval heb ik daar de conversies van een gherkin tabel naar een object erin gezet.
- In de helper folder zet je stukjes code die op andere plekken verwarring opleveren
-
model folder
- in deze folder staan de DTO's (Data Transfer Object) van elke benodigde database tabel.
- Deze verzend je naar de api en krijg je ook weer terug van de api.
- Voor deze DTO's is gebruik gemaakt van LOMBOK hierdoor worden de getters, setters, builders and constructors automagisch gegeneerd.
-
step folder
- In de step folder plaats je de code voor je feature files in een class met bij voorkeur dezelfde naam als je feature file.2
- Om te zorgen dat je over stappen heen kan gaan is de
State
class geïntroduceerd hierin kun je je response tussentijds opslaan.
-
support folder
- Hierin staan de services die communiceren met de api.
- Elke service moet een
@service
tag boven in het bestand hebben (zie de voorbeelden) - Dit alles gaat op basis van rest assured zie ook https://www.baeldung.com/rest-assured-tutorial
-
repository folder
- Mocht jij nou handmatig je database willen controleren dan kun je vanuit deze repository dat doen.
- Voeg de repository toe:
@Autowired
AuthorRepository authorRepository;
Hiermee kun je dan de authorRepository.
en dan wat je wil doen;