Compare commits
5 Commits
c7b23335b5
...
ccaff13df3
Author | SHA1 | Date |
---|---|---|
gulerdav | ccaff13df3 | |
gulerdav | c9baf4dfb1 | |
Gian-Andrea Hutter | 00be979863 | |
Gian-Andrea Hutter | 86386d8a91 | |
Gian-Andrea Hutter | d119fd1331 |
|
@ -20,7 +20,7 @@ public class WeatherGradenTaskPlanner {
|
|||
private final PlantList plantList;
|
||||
private final CropList cropList;
|
||||
WeatherService weatherService;
|
||||
private final LocalDate dateSevereWeather = LocalDate.of(2022,12,15);
|
||||
private final LocalDate dateSevereWeather = LocalDate.now();
|
||||
|
||||
public WeatherGradenTaskPlanner(TaskList taskList, PlantList plantList, CropList cropList) {
|
||||
this.taskList = taskList;
|
||||
|
@ -64,7 +64,7 @@ public class WeatherGradenTaskPlanner {
|
|||
|
||||
Task preHailTask = new Task("Hail",
|
||||
"During a summer Thunderstorm it could hail heavily. THe Hail could damage the crops. To prevent damage cover the plants with a strong tarpaulin",
|
||||
dateSevereWeather.minusDays(1L),dateSevereWeather.plusDays(1L));
|
||||
dateSevereWeather.minusDays(1L),dateSevereWeather.plusDays(1L),1L);
|
||||
taskList.saveTask(preHailTask);
|
||||
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ public class WeatherGradenTaskPlanner {
|
|||
private void createPreFrostTask() throws IOException {
|
||||
Task preFrostTask = new Task("Frost",
|
||||
"The temperatur falls below zero degrees, cover especially the root with wool",
|
||||
dateSevereWeather.minusDays(1L),dateSevereWeather.plusDays(1L));
|
||||
dateSevereWeather.minusDays(1L),dateSevereWeather.plusDays(1L),1L);
|
||||
taskList.saveTask(preFrostTask);
|
||||
}
|
||||
|
||||
|
@ -87,7 +87,7 @@ public class WeatherGradenTaskPlanner {
|
|||
private void createPreSnowTask() throws IOException {
|
||||
Task preSnowTask = new Task("Snow",
|
||||
"The weather brings little snowfall. Cover your crops",
|
||||
dateSevereWeather.minusDays(1L),dateSevereWeather.plusDays(1L));
|
||||
dateSevereWeather.minusDays(1L),dateSevereWeather.plusDays(1L),1L);
|
||||
taskList.saveTask(preSnowTask);
|
||||
}
|
||||
|
||||
|
@ -113,9 +113,6 @@ public class WeatherGradenTaskPlanner {
|
|||
/**
|
||||
* Method to set next execution date of the water plant tasks
|
||||
* @param cropTaskList List with tasks from crops
|
||||
* @throws IOException If the database cannot be accessed
|
||||
* @throws HardinessZoneNotSetException If the hardiness zone is not available
|
||||
* @throws PlantNotFoundException if the plant is not available for the watering task
|
||||
*/
|
||||
private void adjustNextExecutionOfWateringTasks(List<Task> cropTaskList){
|
||||
for(Task task : cropTaskList){
|
||||
|
|
|
@ -55,10 +55,11 @@ public class Task {
|
|||
* @param startDate The start date of the task
|
||||
* @param endDate The maximum date on which the task should be executed
|
||||
*/
|
||||
public Task(String name, String description, LocalDate startDate, LocalDate endDate) {
|
||||
public Task(String name, String description, LocalDate startDate, LocalDate endDate, long cropId) {
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.startDate = startDate;
|
||||
nextExecution = startDate;
|
||||
this.endDate = endDate;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
package ch.zhaw.gartenverwaltung.backgroundtasks.weather;
|
||||
|
||||
import ch.zhaw.gartenverwaltung.io.*;
|
||||
import ch.zhaw.gartenverwaltung.models.PlantNotFoundException;
|
||||
import ch.zhaw.gartenverwaltung.types.*;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.time.LocalDate;
|
||||
import java.time.MonthDay;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
public class WeatherGardenTaskPlannerTest {
|
||||
private final URL testFile = JsonCropListTest.class.getResource("test-taskdb.json");
|
||||
Plant examplePlantOnion;
|
||||
Crop exampleCropOnion;
|
||||
Task exampleTask;
|
||||
Task exampleWeatherTask;
|
||||
List<Crop> cropList;
|
||||
List<Plant> plantList;
|
||||
TaskList taskList;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
examplePlantOnion = new Plant(
|
||||
20,
|
||||
"summertime onion",
|
||||
"Onion, (Allium cepa), herbaceous biennial plant in the amaryllis family (Amaryllidaceae) grown for its edible bulb. The onion is likely native to southwestern Asia but is now grown throughout the world, chiefly in the temperate zones. Onions are low in nutrients but are valued for their flavour and are used widely in cooking. They add flavour to such dishes as stews, roasts, soups, and salads and are also served as a cooked vegetable.",
|
||||
null,
|
||||
"15,30,2",
|
||||
0,
|
||||
"sandy to loamy, loose soil, free of stones",
|
||||
new ArrayList<>(),
|
||||
new WateringCycle(15, 3, null),
|
||||
List.of(new GrowthPhase(MonthDay.of(6, 4), MonthDay.of(12, 4), 0, GrowthPhaseType.HARVEST, HardinessZone.ZONE_8A, new ArrayList<>()),
|
||||
new GrowthPhase(MonthDay.of(4, 3), MonthDay.of(12, 4), 0, GrowthPhaseType.PLANT, HardinessZone.ZONE_8A, new ArrayList<>()),
|
||||
new GrowthPhase(MonthDay.of(8, 5), MonthDay.of(12, 4), 0, GrowthPhaseType.PLANT, HardinessZone.ZONE_8A, new ArrayList<>()),
|
||||
new GrowthPhase(MonthDay.of(2, 8), MonthDay.of(12, 4), 0, GrowthPhaseType.PLANT, HardinessZone.ZONE_8A, new ArrayList<>()),
|
||||
new GrowthPhase(MonthDay.of(10, 2), MonthDay.of(12, 4), 0, GrowthPhaseType.PLANT, HardinessZone.ZONE_8A, new ArrayList<>())));
|
||||
|
||||
exampleCropOnion = new Crop(examplePlantOnion.id(), LocalDate.of(2022, 12, 5))
|
||||
.withId(3L);
|
||||
exampleTask = new Task("water plant","water the plant until the ground is wet enough",LocalDate.now(), LocalDate.now().plusDays(2L),3L);
|
||||
exampleTask.setNextExecution(LocalDate.now().plusDays(1L));
|
||||
exampleWeatherTask = new Task("Hail",
|
||||
"During a summer Thunderstorm it could hail heavily. THe Hail could damage the crops. To prevent damage cover the plants with a strong tarpaulin",
|
||||
LocalDate.now().minusDays(1L),LocalDate.now().plusDays(1L),3L);
|
||||
|
||||
taskList = new JsonTaskList(testFile);
|
||||
|
||||
plantList = new ArrayList<>();
|
||||
plantList.add(examplePlantOnion);
|
||||
|
||||
cropList = new ArrayList<>();
|
||||
cropList.add(exampleCropOnion);
|
||||
|
||||
}
|
||||
|
||||
CropList mockCropList(List<Crop> cropList) throws IOException {
|
||||
CropList croplist = mock(CropList.class);
|
||||
when(croplist.getCrops()).thenReturn(cropList);
|
||||
when(croplist.getCropById(3)).thenReturn(java.util.Optional.ofNullable(exampleCropOnion));
|
||||
return croplist;
|
||||
}
|
||||
|
||||
PlantList mockPlantDatabase(List<Plant> plantList) throws HardinessZoneNotSetException, IOException {
|
||||
PlantList plantDatabase = mock(JsonPlantList.class);
|
||||
when(plantDatabase.getPlantList(HardinessZone.ZONE_8A)).thenReturn(plantList);
|
||||
when(plantDatabase.getPlantById(HardinessZone.ZONE_8A,20)).thenReturn(Optional.of(plantList.get(0)));
|
||||
return plantDatabase;
|
||||
}
|
||||
|
||||
@Test
|
||||
void refreshtasks() throws HardinessZoneNotSetException, IOException, PlantNotFoundException {
|
||||
WeatherGradenTaskPlanner weatherGradenTaskPlanner = new WeatherGradenTaskPlanner(taskList, mockPlantDatabase(plantList), mockCropList(cropList));
|
||||
taskList.saveTask(exampleTask);
|
||||
weatherGradenTaskPlanner.refreshTasks();
|
||||
assertEquals(exampleTask.getName(),taskList.getTaskList(LocalDate.now(),LocalDate.now().plusDays(7)).get(0).getName());
|
||||
assertEquals(LocalDate.now().plusDays(2L),taskList.getTaskList(LocalDate.now(),LocalDate.now().plusDays(7)).get(0).getNextExecution());
|
||||
assertEquals(exampleWeatherTask.getName(),taskList.getTaskList(LocalDate.now(),LocalDate.now().plusDays(7)).get(1).getName());
|
||||
assertEquals(exampleWeatherTask.getStartDate(),taskList.getTaskList(LocalDate.now(),LocalDate.now().plusDays(7)).get(1).getStartDate());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
[
|
||||
]
|
Loading…
Reference in New Issue