Make real Test for BO only

This commit is contained in:
Olivier PARPAILLON
2025-07-10 11:18:19 +02:00
parent 3fd8990079
commit 5d79781c76
21 changed files with 394 additions and 235 deletions

View File

@@ -1,17 +1,7 @@
package fr.eni.demo.bll;
import fr.eni.demo.bo.Adresse;
import fr.eni.demo.dal.AdresseRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class AdresseService {
@Autowired
AdresseRepository adresseRepository;
public void add(Adresse adresse) {
adresseRepository.save(adresse);
}
public interface AdresseService {
void add(Adresse adresse);
}

View File

@@ -0,0 +1,21 @@
package fr.eni.demo.bll;
import fr.eni.demo.bo.Adresse;
import fr.eni.demo.dal.AdresseRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class AdresseServiceImpl implements AdresseService{
private AdresseRepository adresseRepository;
public AdresseServiceImpl(AdresseRepository adresseRepository) {
this.adresseRepository = adresseRepository;
}
@Override
public void add(Adresse adresse) {
adresseRepository.save(adresse);
}
}

View File

@@ -1,23 +1,10 @@
package fr.eni.demo.bll;
import fr.eni.demo.bo.Client;
import fr.eni.demo.dal.ClientRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Optional;
@Service
public class ClientService {
@Autowired
private ClientRepository clientRepository;
public void add(Client client) {
clientRepository.save(client);
}
public Optional<Client> findById(Long clientId) {
return clientRepository.findById(clientId);
}
public interface ClientService {
void add(Client client);
Optional<Client> findById(Long clientId);
}

View File

@@ -0,0 +1,28 @@
package fr.eni.demo.bll;
import fr.eni.demo.bo.Client;
import fr.eni.demo.dal.ClientRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Optional;
@Service
public class ClientServiceImpl implements ClientService {
private ClientRepository clientRepository;
public ClientServiceImpl(ClientRepository clientRepository) {
this.clientRepository = clientRepository;
}
@Override
public void add(Client client) {
clientRepository.save(client);
}
@Override
public Optional<Client> findById(Long clientId) {
return clientRepository.findById(clientId);
}
}

View File

@@ -1,10 +0,0 @@
package fr.eni.demo.bll;
import fr.eni.demo.bo.Employe;
import java.util.List;
public interface EmployeService {
void ajouter(Employe employe);
List<Employe> chargerTousEmployes();
}

View File

@@ -1,46 +0,0 @@
package fr.eni.demo.bll;
import java.util.List;
import org.springframework.stereotype.Service;
import fr.eni.demo.bo.Employe;
import fr.eni.demo.dal.EmployeRepository;
import lombok.AllArgsConstructor;
//Permet de faire injecter la couche DAL associée
@AllArgsConstructor
@Service
public class EmployeServiceImpl implements EmployeService {
private EmployeRepository employeRepository;
@Override
public void ajouter(Employe employe) {
// Validation des données de l'employé avant sauvegarde
if (employe == null) {
throw new RuntimeException("L'employé n'est pas renseigné");
}
validerImmatriculation(employe);
validerChaineNonNulle(employe.getNom(), "Vous devez renseigner le nom");
validerChaineNonNulle(employe.getPrenom(), "Vous devez renseigner le prénom");
validerChaineNonNulle(employe.getEmail(), "Vous devez renseigner un email");
employeRepository.create(employe);
}
@Override
public List<Employe> chargerTousEmployes() {
return employeRepository.findAll();
}
private void validerChaineNonNulle(String chaine, String msgErreur) {
if (chaine == null || chaine.isBlank())
throw new RuntimeException(msgErreur);
}
private void validerImmatriculation(Employe employe) {
// Valider que l'immatriculation n'est pas nule ou vide
validerChaineNonNulle(employe.getImmatriculation(), "L'immatriculation n'a pas été renseignée");
// Immatriculation doit être unique
Employe employeDB = employeRepository.findByImmatriculation(employe.getImmatriculation());
if (employeDB != null) {
throw new RuntimeException("L'immatriculation doit être unique");
}
}
}

View File

@@ -1,17 +1,7 @@
package fr.eni.demo.bll;
import fr.eni.demo.bo.GameType;
import fr.eni.demo.dal.GameTypeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class GameTypeService {
@Autowired
private GameTypeRepository gameTypeRepository;
public void add(GameType gameType) {
gameTypeRepository.save(gameType);
}
public interface GameTypeService {
void add(GameType gameType);
}

View File

@@ -0,0 +1,21 @@
package fr.eni.demo.bll;
import fr.eni.demo.bo.GameType;
import fr.eni.demo.dal.GameTypeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class GameTypeServiceImpl implements GameTypeService {
private GameTypeRepository gameTypeRepository;
public GameTypeServiceImpl(GameTypeRepository gameTypeRepository) {
this.gameTypeRepository = gameTypeRepository;
}
@Override
public void add(GameType gameType) {
gameTypeRepository.save(gameType);
}
}

View File

@@ -1,17 +1,7 @@
package fr.eni.demo.bll;
import fr.eni.demo.bo.Location;
import fr.eni.demo.dal.LocationRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class LocationService {
@Autowired
private LocationRepository locationRepository;
public void add(Location location) {
locationRepository.save(location);
}
public interface LocationService {
void add(Location location);
}

View File

@@ -0,0 +1,20 @@
package fr.eni.demo.bll;
import fr.eni.demo.bo.Location;
import fr.eni.demo.dal.LocationRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class LocationServiceImpl implements LocationService {
private LocationRepository locationRepository;
public LocationServiceImpl(LocationRepository locationRepository) {
this.locationRepository = locationRepository;
}
@Override
public void add(Location location) {
locationRepository.save(location);
}
}

View File

@@ -1,23 +1,11 @@
package fr.eni.demo.bll;
import fr.eni.demo.bo.Stock;
import fr.eni.demo.dal.StockRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Optional;
@Service
public class StockService {
@Autowired
private StockRepository stockRepository;
public void add(Stock stock) {
stockRepository.save(stock);
}
public Optional<Stock> findById(Long gameId) {
return stockRepository.findById(gameId);
}
public interface StockService {
void add(Stock game);
Optional<Stock> findById(Long gameId);
}

View File

@@ -0,0 +1,28 @@
package fr.eni.demo.bll;
import fr.eni.demo.bo.Stock;
import fr.eni.demo.dal.StockRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Optional;
@Service
public class StockServiceImpl implements StockService{
private StockRepository stockRepository;
public StockServiceImpl(StockRepository stockRepository) {
this.stockRepository = stockRepository;
}
@Override
public void add(Stock game) {
stockRepository.save(game);
}
@Override
public Optional<Stock> findById(Long gameId) {
return stockRepository.findById(gameId);
}
}

View File

@@ -1,39 +0,0 @@
package fr.eni.demo.bo;
import jakarta.persistence.*;
import lombok.*;
//@Data
@RequiredArgsConstructor
@Getter
@Setter
@EqualsAndHashCode(of= {"immatriculation"})
@ToString
//@Builder
@Entity
@Table(name="EMPLOYES")
public class Employe {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "EMPLOYEE_ID")
private Integer id;
@Column(name= "LAST_NAME", nullable = false, length = 90)
private String nom;
@Column(name= "FIRST_NAME", nullable = false, length = 150)
private String prenom;
@Column(nullable = false, unique = true)
private String email;
@Column(name= "EMPLOYE_REGISTRATION", nullable = false, unique = true, length = 100)
private String immatriculation;
@Column(name= "HOME_PHONE_NUMBER", nullable = false, length = 12)
private String numDom;
@Column(name= "PHONE_NUMBER", nullable = false, length = 12)
private String numPortable;
}

View File

@@ -1,18 +0,0 @@
package fr.eni.demo.dal;
import java.util.List;
import fr.eni.demo.bo.Employe;
public interface EmployeRepository {
void create(Employe employe);
Employe read(Integer id);
Employe findByImmatriculation(String immatriculation);
List<Employe> findAll();
void update(Employe employe);
void delete(Employe employe);
}

View File

@@ -1,43 +0,0 @@
package fr.eni.demo.dal;
import java.util.*;
import fr.eni.demo.bo.Employe;
import org.springframework.stereotype.Repository;
@Repository
public class EmployeRepositoryImpl implements EmployeRepository {
private List<Employe> employes = new ArrayList<>();
@Override
public void create(Employe employe) {
employes.add(employe);
}
@Override
public Employe read(Integer id) {
return employes.stream().filter(item -> item.getId() == id).findAny().orElse(null);
}
@Override
public Employe findByImmatriculation(String immatriculation) {
return employes.stream().filter(item -> item.getImmatriculation() == immatriculation).findAny().orElse(null);
}
@Override
public List<Employe> findAll() {
return employes;
}
@Override
public void update(Employe employe) {
Employe emp = read(employe.getId());
if (emp != null) {
emp.setEmail(employe.getEmail());
emp.setPrenom(employe.getPrenom());
}
}
@Override public void delete(Employe employe) {
employes.remove(employe);
}
}