#26 added fixed test files, made Crop class testable
This commit is contained in:
		
							parent
							
								
									ce93531ab8
								
							
						
					
					
						commit
						83bc011870
					
				| 
						 | 
					@ -20,7 +20,7 @@ import java.util.Map;
 | 
				
			||||||
import java.util.Optional;
 | 
					import java.util.Optional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class JsonGardenPlan implements GardenPlan {
 | 
					public class JsonGardenPlan implements GardenPlan {
 | 
				
			||||||
    private final URL dataSource = getClass().getResource("user-crops.json");
 | 
					    private final URL dataSource;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private IdProvider idProvider;
 | 
					    private IdProvider idProvider;
 | 
				
			||||||
    private Map<Long, Crop> cropMap = Collections.emptyMap();
 | 
					    private Map<Long, Crop> cropMap = Collections.emptyMap();
 | 
				
			||||||
| 
						 | 
					@ -40,7 +40,21 @@ public class JsonGardenPlan implements GardenPlan {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @see GardenPlan#getCrops()
 | 
					     * Default constructor
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public JsonGardenPlan() {
 | 
				
			||||||
 | 
					        this.dataSource = getClass().getResource("user-crops.json");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Constructor to use a specified {@link URL} as a {@link #dataSource}
 | 
				
			||||||
 | 
					     * @param dataSource A {@link URL} to the file to be used as a data source
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public JsonGardenPlan(URL dataSource) {
 | 
				
			||||||
 | 
					        this.dataSource = dataSource;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * {@inheritDoc}
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public List<Crop> getCrops() throws IOException {
 | 
					    public List<Crop> getCrops() throws IOException {
 | 
				
			||||||
| 
						 | 
					@ -51,7 +65,7 @@ public class JsonGardenPlan implements GardenPlan {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @see GardenPlan#getCropById(long)
 | 
					     * {@inheritDoc}
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public Optional<Crop> getCropById(long id) throws IOException {
 | 
					    public Optional<Crop> getCropById(long id) throws IOException {
 | 
				
			||||||
| 
						 | 
					@ -62,7 +76,7 @@ public class JsonGardenPlan implements GardenPlan {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @see GardenPlan#saveCrop(Crop)
 | 
					     * {@inheritDoc}
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * Saves a crop to the database.
 | 
					     * Saves a crop to the database.
 | 
				
			||||||
     * If no {@link Crop#cropId} is set, one will be generated and
 | 
					     * If no {@link Crop#cropId} is set, one will be generated and
 | 
				
			||||||
| 
						 | 
					@ -79,7 +93,7 @@ public class JsonGardenPlan implements GardenPlan {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @see GardenPlan#removeCrop(Crop)
 | 
					     * {@inheritDoc}
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void removeCrop(Crop crop) throws IOException {
 | 
					    public void removeCrop(Crop crop) throws IOException {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
package ch.zhaw.gartenverwaltung.types;
 | 
					package ch.zhaw.gartenverwaltung.types;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.time.LocalDate;
 | 
					import java.time.LocalDate;
 | 
				
			||||||
 | 
					import java.util.Objects;
 | 
				
			||||||
import java.util.Optional;
 | 
					import java.util.Optional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class Crop {
 | 
					public class Crop {
 | 
				
			||||||
| 
						 | 
					@ -41,6 +42,24 @@ public class Crop {
 | 
				
			||||||
    public LocalDate getStartDate() { return startDate; }
 | 
					    public LocalDate getStartDate() { return startDate; }
 | 
				
			||||||
    public double getArea() { return area; }
 | 
					    public double getArea() { return area; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean equals(Object other) {
 | 
				
			||||||
 | 
					        if (this == other) return true;
 | 
				
			||||||
 | 
					        if (other instanceof Crop otherCrop) {
 | 
				
			||||||
 | 
					            return Objects.equals(this.cropId, otherCrop.cropId) &&
 | 
				
			||||||
 | 
					                    plantId == otherCrop.plantId &&
 | 
				
			||||||
 | 
					                    startDate != null && startDate.equals(otherCrop.startDate) &&
 | 
				
			||||||
 | 
					                    area == otherCrop.area;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int hashCode() {
 | 
				
			||||||
 | 
					        int startCode = startDate != null ? startDate.hashCode() : 0;
 | 
				
			||||||
 | 
					        return (int) plantId ^ (startCode << 16);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String toString() {
 | 
					    public String toString() {
 | 
				
			||||||
        return String.format("Crop [ cropId: %d, plantId: %d, startDate: %s, area: %f ]",
 | 
					        return String.format("Crop [ cropId: %d, plantId: %d, startDate: %s, area: %f ]",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@ import org.junit.jupiter.api.DisplayName;
 | 
				
			||||||
import org.junit.jupiter.api.Test;
 | 
					import org.junit.jupiter.api.Test;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
import java.text.SimpleDateFormat;
 | 
					 | 
				
			||||||
import java.util.Arrays;
 | 
					import java.util.Arrays;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Optional;
 | 
					import java.util.Optional;
 | 
				
			||||||
| 
						 | 
					@ -16,7 +15,6 @@ import java.util.stream.Collectors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class JsonPlantDatabaseTest {
 | 
					public class JsonPlantDatabaseTest {
 | 
				
			||||||
    PlantDatabase testDatabase;
 | 
					    PlantDatabase testDatabase;
 | 
				
			||||||
    SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @BeforeEach
 | 
					    @BeforeEach
 | 
				
			||||||
    void connectToDb() {
 | 
					    void connectToDb() {
 | 
				
			||||||
| 
						 | 
					@ -30,9 +28,7 @@ public class JsonPlantDatabaseTest {
 | 
				
			||||||
        List<Plant> testList;
 | 
					        List<Plant> testList;
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            testList = testDatabase.getPlantList(HardinessZone.ZONE_8A);
 | 
					            testList = testDatabase.getPlantList(HardinessZone.ZONE_8A);
 | 
				
			||||||
        } catch (IOException e) {
 | 
					        } catch (IOException | HardinessZoneNotSetException e) {
 | 
				
			||||||
            throw new RuntimeException(e);
 | 
					 | 
				
			||||||
        } catch (HardinessZoneNotSetException e) {
 | 
					 | 
				
			||||||
            throw new RuntimeException(e);
 | 
					            throw new RuntimeException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        Assertions.assertEquals(3, testList.size());
 | 
					        Assertions.assertEquals(3, testList.size());
 | 
				
			||||||
| 
						 | 
					@ -48,9 +44,7 @@ public class JsonPlantDatabaseTest {
 | 
				
			||||||
        List<Plant> testList;
 | 
					        List<Plant> testList;
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            testList = testDatabase.getPlantList(HardinessZone.ZONE_1A);
 | 
					            testList = testDatabase.getPlantList(HardinessZone.ZONE_1A);
 | 
				
			||||||
        } catch (IOException e) {
 | 
					        } catch (IOException | HardinessZoneNotSetException e) {
 | 
				
			||||||
            throw new RuntimeException(e);
 | 
					 | 
				
			||||||
        } catch (HardinessZoneNotSetException e) {
 | 
					 | 
				
			||||||
            throw new RuntimeException(e);
 | 
					            throw new RuntimeException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        Assertions.assertEquals(0, testList.size());
 | 
					        Assertions.assertEquals(0, testList.size());
 | 
				
			||||||
| 
						 | 
					@ -64,9 +58,7 @@ public class JsonPlantDatabaseTest {
 | 
				
			||||||
        Optional<Plant> testPlant;
 | 
					        Optional<Plant> testPlant;
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            testPlant = testDatabase.getPlantById(HardinessZone.ZONE_8A, 1);
 | 
					            testPlant = testDatabase.getPlantById(HardinessZone.ZONE_8A, 1);
 | 
				
			||||||
        } catch (IOException e) {
 | 
					        } catch (IOException | HardinessZoneNotSetException e) {
 | 
				
			||||||
            throw new RuntimeException(e);
 | 
					 | 
				
			||||||
        } catch (HardinessZoneNotSetException e) {
 | 
					 | 
				
			||||||
            throw new RuntimeException(e);
 | 
					            throw new RuntimeException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        Assertions.assertTrue(testPlant.isPresent());
 | 
					        Assertions.assertTrue(testPlant.isPresent());
 | 
				
			||||||
| 
						 | 
					@ -75,20 +67,12 @@ public class JsonPlantDatabaseTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    @DisplayName("Check whether single access respects zone correctly.")
 | 
					    @DisplayName("Check whether single access respects zone correctly.")
 | 
				
			||||||
    void getPlantByIdAndWrongZone() {
 | 
					    void getPlantByIdAndWrongZone() throws HardinessZoneNotSetException, IOException {
 | 
				
			||||||
        Optional<Plant> testPlant;
 | 
					        Optional<Plant> testPlant = testDatabase.getPlantById(HardinessZone.ZONE_1A, 1);
 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            testPlant = testDatabase.getPlantById(HardinessZone.ZONE_1A, 1);
 | 
					 | 
				
			||||||
        Assertions.assertFalse(testPlant.isPresent());
 | 
					        Assertions.assertFalse(testPlant.isPresent());
 | 
				
			||||||
        testPlant = testDatabase.getPlantById(HardinessZone.ZONE_8A, 1);
 | 
					        testPlant = testDatabase.getPlantById(HardinessZone.ZONE_8A, 1);
 | 
				
			||||||
        Assertions.assertTrue(testPlant.isPresent());
 | 
					        Assertions.assertTrue(testPlant.isPresent());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } catch (IOException e) {
 | 
					 | 
				
			||||||
            throw new RuntimeException(e);
 | 
					 | 
				
			||||||
        } catch (HardinessZoneNotSetException e) {
 | 
					 | 
				
			||||||
            throw new RuntimeException(e);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        Assertions.assertTrue(testPlant.isPresent());
 | 
					 | 
				
			||||||
        Assertions.assertEquals("Early Carrot", testPlant.get().name());
 | 
					        Assertions.assertEquals("Early Carrot", testPlant.get().name());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,9 +82,7 @@ public class JsonPlantDatabaseTest {
 | 
				
			||||||
        Optional<Plant> testPlant;
 | 
					        Optional<Plant> testPlant;
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            testPlant = testDatabase.getPlantById(HardinessZone.ZONE_8A, 99);
 | 
					            testPlant = testDatabase.getPlantById(HardinessZone.ZONE_8A, 99);
 | 
				
			||||||
        } catch (IOException e) {
 | 
					        } catch (IOException | HardinessZoneNotSetException e) {
 | 
				
			||||||
            throw new RuntimeException(e);
 | 
					 | 
				
			||||||
        } catch (HardinessZoneNotSetException e) {
 | 
					 | 
				
			||||||
            throw new RuntimeException(e);
 | 
					            throw new RuntimeException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        Assertions.assertFalse(testPlant.isPresent());
 | 
					        Assertions.assertFalse(testPlant.isPresent());
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					[
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "cropId": 0,
 | 
				
			||||||
 | 
					    "plantId": 1,
 | 
				
			||||||
 | 
					    "startDate": "2023-02-25",
 | 
				
			||||||
 | 
					    "area": 0.5
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "cropId": 1,
 | 
				
			||||||
 | 
					    "plantId": 1,
 | 
				
			||||||
 | 
					    "startDate": "2023-03-01",
 | 
				
			||||||
 | 
					    "area": 0.5
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "cropId": 2,
 | 
				
			||||||
 | 
					    "plantId": 0,
 | 
				
			||||||
 | 
					    "startDate": "2023-03-25",
 | 
				
			||||||
 | 
					    "area": 1.5
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					[
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
		Loading…
	
		Reference in New Issue