Add tests for MakerInfoProvider
These are going to be handy soon, as I'm about to add Caffeine for caching.
This commit is contained in:
@@ -13,6 +13,9 @@ public class MakerInfoProvider {
|
|||||||
private final Map<Integer, MakerRecipe> recipeCache = new ConcurrentHashMap<>();
|
private final Map<Integer, MakerRecipe> recipeCache = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
public MakerInfoProvider(MakerDao makerDao) {
|
public MakerInfoProvider(MakerDao makerDao) {
|
||||||
|
if (makerDao == null) {
|
||||||
|
throw new IllegalArgumentException("MakerDao is null");
|
||||||
|
}
|
||||||
this.makerDao = makerDao;
|
this.makerDao = makerDao;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
125
src/test/java/database/maker/MakerInfoProviderTest.java
Normal file
125
src/test/java/database/maker/MakerInfoProviderTest.java
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
package database.maker;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
|
import testutil.AnyValues;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
class MakerInfoProviderTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private MakerDao makerDao;
|
||||||
|
|
||||||
|
private MakerInfoProvider makerInfoProvider;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void reset() {
|
||||||
|
MockitoAnnotations.openMocks(this);
|
||||||
|
this.makerInfoProvider = new MakerInfoProvider(makerDao);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void requireNonNullDao() {
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> new MakerInfoProvider(null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getReagentFromDb() {
|
||||||
|
int itemId = 5783;
|
||||||
|
MakerReagent reagent = createReagent(itemId);
|
||||||
|
when(makerDao.getReagent(anyInt())).thenReturn(Optional.of(reagent));
|
||||||
|
|
||||||
|
Optional<MakerReagent> retrievedReagent = makerInfoProvider.getMakerReagent(itemId);
|
||||||
|
|
||||||
|
assertTrue(retrievedReagent.isPresent());
|
||||||
|
assertEquals(reagent, retrievedReagent.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getCachedReagent() {
|
||||||
|
int itemId = 90123444;
|
||||||
|
MakerReagent reagent = createReagent(itemId);
|
||||||
|
when(makerDao.getReagent(anyInt())).thenReturn(Optional.of(reagent));
|
||||||
|
|
||||||
|
Optional<MakerReagent> firstReagent = makerInfoProvider.getMakerReagent(itemId);
|
||||||
|
Optional<MakerReagent> secondReagent = makerInfoProvider.getMakerReagent(itemId);
|
||||||
|
|
||||||
|
assertTrue(firstReagent.isPresent());
|
||||||
|
assertEquals(reagent, firstReagent.get());
|
||||||
|
assertTrue(secondReagent.isPresent());
|
||||||
|
assertEquals(reagent, secondReagent.get());
|
||||||
|
verify(makerDao, times(1)).getReagent(itemId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private MakerReagent createReagent(int itemId) {
|
||||||
|
return new MakerReagent(itemId, "incPAD", 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getRecipeFromDb() {
|
||||||
|
int itemId = 43893;
|
||||||
|
MakerRecipe recipe = createRecipe(itemId);
|
||||||
|
when(makerDao.getRecipe(itemId)).thenReturn(Optional.of(recipe));
|
||||||
|
|
||||||
|
Optional<MakerRecipe> retrievedRecipe = makerInfoProvider.getMakerRecipe(itemId);
|
||||||
|
|
||||||
|
assertTrue(retrievedRecipe.isPresent());
|
||||||
|
assertEquals(recipe, retrievedRecipe.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getRecipeFromDb_notFound() {
|
||||||
|
when(makerDao.getRecipe(anyInt())).thenReturn(Optional.empty());
|
||||||
|
|
||||||
|
Optional<MakerRecipe> recipe = makerInfoProvider.getMakerRecipe(AnyValues.integer());
|
||||||
|
|
||||||
|
assertTrue(recipe.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getCachedRecipe() {
|
||||||
|
int itemId = 10848;
|
||||||
|
MakerRecipe recipe = createRecipe(itemId);
|
||||||
|
when(makerDao.getRecipe(anyInt())).thenReturn(Optional.of(recipe));
|
||||||
|
|
||||||
|
Optional<MakerRecipe> firstRecipe = makerInfoProvider.getMakerRecipe(itemId);
|
||||||
|
Optional<MakerRecipe> secondRecipe = makerInfoProvider.getMakerRecipe(itemId);
|
||||||
|
|
||||||
|
assertTrue(firstRecipe.isPresent());
|
||||||
|
assertEquals(recipe, firstRecipe.get());
|
||||||
|
assertTrue(secondRecipe.isPresent());
|
||||||
|
assertEquals(recipe, secondRecipe.get());
|
||||||
|
verify(makerDao, times(1)).getRecipe(itemId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private MakerRecipe createRecipe(int itemId) {
|
||||||
|
return new MakerRecipe(itemId, (short) 0, (short) 45, (short) 1, 100_000, null, null, null, (short) 1, (short) 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getStimulant() {
|
||||||
|
int catalyst = 4031200;
|
||||||
|
MakerRecipe recipeWithCatalyst = new MakerRecipe(0, (short) 0, (short) 0, (short) 0, 0, null, null, catalyst, (short) 0, (short) 0);
|
||||||
|
when(makerDao.getRecipe(anyInt())).thenReturn(Optional.of(recipeWithCatalyst));
|
||||||
|
|
||||||
|
Optional<Integer> stimulant = makerInfoProvider.getStimulant(AnyValues.integer());
|
||||||
|
|
||||||
|
assertTrue(stimulant.isPresent());
|
||||||
|
assertEquals(catalyst, stimulant.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getStimulant_noRecipe() {
|
||||||
|
when(makerDao.getRecipe(anyInt())).thenReturn(Optional.empty());
|
||||||
|
|
||||||
|
Optional<Integer> stimulant = makerInfoProvider.getStimulant(AnyValues.integer());
|
||||||
|
|
||||||
|
assertTrue(stimulant.isEmpty());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,6 +8,10 @@ public class AnyValues {
|
|||||||
return "string";
|
return "string";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int integer() {
|
||||||
|
return 17;
|
||||||
|
}
|
||||||
|
|
||||||
public static DaoException daoException() {
|
public static DaoException daoException() {
|
||||||
return new DaoException(string(), new RuntimeException());
|
return new DaoException(string(), new RuntimeException());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user