Giter Club home page Giter Club logo

paj_auctionsexercise's Introduction

Auctions Exercise

Hogeschool PXL - Exercise Auctions

Fork this project to get started!

Inleiding

Start de spring boot toepassing en verken de code. Om de applicatie uit te voeren heb je een databank met de naam auctionsdb nodig. Je vindt een docker-compose.yml bestand om deze databank aan te maken. De User-tabel wordt aangemaakt (of aangepast) door hibernate.

De volgende REST endpoints zijn beschikbaar:

  1. Het opslaan van een nieuwe user

POST http://localhost:8080/auctions/users met body:

{ "firstName": "Sophie", "lastName": "De Tester", "email": "[email protected]", "dateOfBirth": "24/04/1998" }

  1. Het opzoeken van alle users

GET http://localhost:8080/auctions/users

  1. Het opzoeken van een user adhv de primary key

GET http://localhost:8080/auctions/users/{userId}

Opdracht 1: Unit testing

Implementeer de gevraagde unit testen. Om de service laag te testen moet je gebruikmaken van Mockito. De persistence laag wordt getest met een h2 in-memory database.

Pluralsight cursus over Mockito: https://app.pluralsight.com/library/courses/tdd-junit5/table-of-contents

Opdracht 2: Extra entity klassen

Er zullen items aangeboden in veilingen (auctions). Iedere veiling heeft een beschrijving (description) en een einddatum (endDate). Gebruikers kunnen een bod uitbrengen op een item. De entity klasse User hadden wij reeds voorzien. Pas nu de klassen Auction en Bid aan zodat dit ook geldige entity klassen worden. Voorzie de bidirectionele relatie tussen Auction en Bid (cascadetype in de klasse Auction wordt ALL). Voorzie in de klasse Auction de methode addBid() waarmee de bi-directionele relatie steeds wordt gerespecteerd.

Implementeer in de klasse Auction verder ook de methoden isFinished() en findHighestBid().

  • isFinished() geeft false indien de einddatum van de veiling nog niet is verstreken, en true indien de einddatum van de veiling is verstreken.

  • findHighestBid() geeft het Bid-object met de hoogste waarde. Indien er nog geen biedingen zijn wordt null gegeven.

Schrijf unit testen voor de methoden isFinished() en findHighestBid().

Opdracht 3: AuctionDao en AuctionDaoImpl

De AuctionDao voorziet de volgende functionaliteit:

public interface AuctionDao {
   Auction saveAuction(Auction auction);
   Optional<Auction> findAuctionById(long auction);
   List<Auction> findAllAuctions();
}

Opdracht 4: Een nieuwe veiling aanmaken (auction)

Zorg voor een REST endpoint waarmee een nieuwe veiling aangemaakt kan worden. Een veiling moet ook adhv zijn primary key opgevraagd kunnen worden. Je krijgt alle biedingen voor de veiling te zien, maar de volgende voeg je nog extra toe in de DTO: numberOfBids, highestBid en highestBidBy. Voorzie ook een REST endpoint waarmee je alle huidige veilingen kan opvragen.

Opdracht 5: Biedingen registreren

Voorzie een REST endpoint en implementeer het registreren van biedingen.

POST http://localhost:8080/auctions/rest/auctions/{auctionId}/bids met body { "email": "[email protected]", "price": 22.5 }

Zorg dat onderstaand business regels voldaan worden en zorg ook voor de nodige unit testen om je code te valideren.

  • Gooi een exception op indien de auction en/of de user niet bestaan.
  • Gooi een exception op indien het nieuwe bod lager is dat het huidige hoogste bod.
  • Gooi een exception op indien de user reeds het hoogste bod heeft.
  • Gooi een exception op indien de auction reeds afgelopen is.

paj_auctionsexercise's People

Contributors

custersnele avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.