Skip to content
Snippets Groups Projects
Commit 4a94e0c2 authored by Birk Øvstetun Narvhus's avatar Birk Øvstetun Narvhus
Browse files

added test + fixed services

parent d5afdc6c
No related branches found
No related tags found
No related merge requests found
...@@ -2,6 +2,7 @@ package ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct; ...@@ -2,6 +2,7 @@ package ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge; import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
...@@ -13,6 +14,7 @@ import java.sql.Date; ...@@ -13,6 +14,7 @@ import java.sql.Date;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
@Entity(name = "fridge_product") @Entity(name = "fridge_product")
@Builder
@IdClass(FridgeProductId.class) @IdClass(FridgeProductId.class)
public class FridgeProductAsso { public class FridgeProductAsso {
@Id @Id
......
...@@ -2,6 +2,7 @@ package ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct; ...@@ -2,6 +2,7 @@ package ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -17,6 +18,7 @@ import java.sql.Date; ...@@ -17,6 +18,7 @@ import java.sql.Date;
@EqualsAndHashCode @EqualsAndHashCode
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Builder
public class FridgeProductId implements Serializable { public class FridgeProductId implements Serializable {
private long fridgeId; private long fridgeId;
......
package ntnu.idatt2016.v233.SmartMat.entity.group; package ntnu.idatt2016.v233.SmartMat.entity.group;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
...@@ -38,4 +39,16 @@ public class Fridge{ ...@@ -38,4 +39,16 @@ public class Fridge{
@JsonIgnoreProperties("fridge") @JsonIgnoreProperties("fridge")
List<FridgeProductAsso> products; List<FridgeProductAsso> products;
/**
* Adds a product to the fridge
* @param product the product to add to the fridge
*/
public void addProduct(FridgeProductAsso product){
if(products == null){
products = new ArrayList<>();
}
products.add(product);
}
} }
...@@ -10,6 +10,7 @@ import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge; ...@@ -10,6 +10,7 @@ import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
import ntnu.idatt2016.v233.SmartMat.entity.Recipe; import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso; import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
...@@ -71,4 +72,15 @@ public class Product{ ...@@ -71,4 +72,15 @@ public class Product{
@JsonIgnoreProperties({"products"}) @JsonIgnoreProperties({"products"})
List<Recipe> recipes; List<Recipe> recipes;
/**
* Adds a fridge to the product
* @param fridge the fridge product association to add to the product
*/
public void addFridge(FridgeProductAsso fridge){
if(fridges == null){
fridges = new ArrayList<>();
}
fridges.add(fridge);
}
} }
\ No newline at end of file
...@@ -36,6 +36,14 @@ public class FridgeProductAssoService { ...@@ -36,6 +36,14 @@ public class FridgeProductAssoService {
temp.setEan(product); temp.setEan(product);
temp.setPurchaseDate(purchaseDate); temp.setPurchaseDate(purchaseDate);
fridgeProductAssoRepository.save(temp); fridgeProductAssoRepository.save(temp);
fridge.addProduct(temp);
product.addFridge(temp);
fridgeRepository.save(fridge);
productRepository.save(product);
return temp; return temp;
} }
......
...@@ -56,8 +56,7 @@ public class FridgeService { ...@@ -56,8 +56,7 @@ public class FridgeService {
if (fridge.getProducts().contains(temp)) { if (fridge.getProducts().contains(temp)) {
return false; return false;
} }
fridge.getProducts().add(temp); fridgeProductAssoService.createFridgeProductAsso(fridge, productToAdd, new Date(LocalDate.now().toEpochDay()));
fridgeRepository.save(fridge);
return true; return true;
} else { } else {
return false; return false;
...@@ -87,7 +86,6 @@ public class FridgeService { ...@@ -87,7 +86,6 @@ public class FridgeService {
fridgeProductAssoService.deleteFridgeProductAsso(new FridgeProductAsso(fridge, fridgeProductAssoService.deleteFridgeProductAsso(new FridgeProductAsso(fridge,
productToRemove, purchaseDate)); productToRemove, purchaseDate));
fridgeRepository.save(fridge);
return true; return true;
} else { } else {
return false; return false;
......
package ntnu.idatt2016.v233.SmartMat.service.group;
import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso;
import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductId;
import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
import ntnu.idatt2016.v233.SmartMat.repository.group.FridgeProductAssoRepository;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import java.sql.Date;
import java.time.Instant;
import java.time.LocalDate;
import java.util.List;
import java.util.Optional;
import static org.junit.jupiter.api.Assertions.*;
@DataJpaTest
class FridgeProductAssoServiceTest {
@Autowired
TestEntityManager entityManager;
@Autowired
FridgeProductAssoRepository fridgeProductAssoRepository;
private Product product;
private Fridge fridge;
@BeforeEach
void setUp() {
entityManager.clear();
product = Product.builder()
.ean(1234567890123L)
.name("Test")
.description("Test")
.build();
fridge = Fridge.builder()
.build();
FridgeProductAsso fridgeProductAsso = FridgeProductAsso.builder()
.ean(product)
.fridgeId(fridge)
.purchaseDate(Date.valueOf("2023-04-24"))
.build();
product.addFridge(fridgeProductAsso);
fridge.addProduct(fridgeProductAsso);
entityManager.persist(product);
entityManager.persist(fridge);
entityManager.persist(fridgeProductAsso);
}
@Test
void createFridgeProductAsso() {
Optional<FridgeProductAsso> temp = fridgeProductAssoRepository.findById(
new FridgeProductId(fridge.getFridgeId(), product.getEan(), Date.valueOf("2023-04-24")));
assertTrue(temp.isPresent());
assertTrue(entityManager.find(Fridge.class, fridge.getFridgeId()).getProducts().contains(temp.get()));
assertTrue(entityManager.find(Product.class, product.getEan()).getFridges().contains(temp.get()));
assertEquals(product.getEan(), temp.get().getEan().getEan());
assertEquals(fridge.getFridgeId(), temp.get().getFridgeId().getFridgeId());
}
@Test
void deleteFridgeProductAsso() {
Optional<FridgeProductAsso> temp = fridgeProductAssoRepository.findById(
new FridgeProductId(fridge.getFridgeId(), product.getEan(), Date.valueOf("2023-04-24")));
assertTrue(temp.isPresent());
fridgeProductAssoRepository.delete(temp.get());
assertFalse(fridgeProductAssoRepository.findById(
new FridgeProductId(fridge.getFridgeId(), product.getEan(), Date.valueOf("2023-04-24"))).isPresent());
fridge.getProducts().remove(temp.get());
product.getFridges().remove(temp.get());
entityManager.persist(fridge);
entityManager.persist(product);
assertFalse(entityManager.find(Fridge.class, fridge.getFridgeId()).getProducts().contains(temp.get()));
assertFalse(entityManager.find(Product.class, product.getEan()).getFridges().contains(temp.get()));
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment