Skip to content

Commit

Permalink
SAK-49588 gradebookng use a mock ResourceLoader when running tests (s…
Browse files Browse the repository at this point in the history
  • Loading branch information
ern authored Dec 21, 2023
1 parent 9e2fd25 commit aa099d4
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
@Slf4j
public class FormatHelper {

private static ResourceLoader rl = new ResourceLoader();
private static ResourceLoader RL = new ResourceLoader();

/**
* The value is a double (ie 12.34542) that needs to be formatted as a percentage with two decimal places precision. And drop off any .0
Expand Down Expand Up @@ -165,7 +165,7 @@ public static String formatGrade(final String grade) {
* @return
*/
public static String formatGradeFromUserLocale(final String grade) {
return formatGradeForLocale(grade, rl.getLocale());
return formatGradeForLocale(grade, RL.getLocale());
}

/**
Expand Down Expand Up @@ -193,7 +193,7 @@ public static String formatGradeForDisplay(final String grade) {
try {
final BigDecimal d = convertStringToBigDecimal(grade, 2);

final DecimalFormat dfFormat = (DecimalFormat) NumberFormat.getInstance(rl.getLocale());
final DecimalFormat dfFormat = (DecimalFormat) NumberFormat.getInstance(RL.getLocale());
dfFormat.setMinimumFractionDigits(0);
dfFormat.setMaximumFractionDigits(2);
dfFormat.setGroupingUsed(true);
Expand Down Expand Up @@ -314,7 +314,7 @@ public static String abbreviateMiddle(final String s) {
*/
public static Double validateDouble(final String value) {
final DoubleValidator dv = new DoubleValidator();
return dv.validate(value, rl.getLocale());
return dv.validate(value, RL.getLocale());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
Expand Down Expand Up @@ -105,6 +104,8 @@ public class ImportGradesHelper {

private static final char CSV_SEMICOLON_SEPARATOR = ';';

private static ResourceLoader RL = new ResourceLoader();

/**
* Helper to parse the imported file into an {@link ImportedSpreadsheetWrapper} depending on its type
*
Expand Down Expand Up @@ -272,7 +273,7 @@ private static ImportedSpreadsheetWrapper parseXls(final InputStream is, final G
private static ImportedRow mapLine(final String[] line, final Map<Integer, ImportedColumn> mapping, final Map<String, GbUser> userMap, String userDecimalSeparator) {

final ImportedRow row = new ImportedRow();
NumberFormat nbFormat = NumberFormat.getInstance(new ResourceLoader().getLocale());
NumberFormat nbFormat = NumberFormat.getInstance(RL.getLocale());
String decSeparator =((DecimalFormat)nbFormat).getDecimalFormatSymbols().getDecimalSeparator() + "";

for (final Map.Entry<Integer, ImportedColumn> entry : mapping.entrySet()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,31 +15,34 @@
*/
package org.sakaiproject.gradebookng.business;

import static org.mockito.Mockito.when;

import java.lang.reflect.Field;
import java.text.NumberFormat;
import java.util.Locale;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.sakaiproject.gradebookng.business.util.FormatHelper;
import org.sakaiproject.util.ResourceLoader;

public class TestGradebookNgBusinessService {

@InjectMocks
GradebookNgBusinessService service;

@Mock private ResourceLoader resourceLoader;

@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}

@Test
public void injectionOk() {
Assert.assertNotNull(service);
public void openMocks() throws NoSuchFieldException, IllegalAccessException {
MockitoAnnotations.openMocks(this);
Field field = FormatHelper.class.getDeclaredField("RL");
field.setAccessible(true);
field.set(null, resourceLoader);

when(resourceLoader.getLocale()).thenReturn(Locale.getDefault());
}

@Test
public void testCourseGradeRoundingUp() {
double d = 89.4455D;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,14 @@
*/
package org.sakaiproject.gradebookng.business.util;

import static org.mockito.Mockito.when;

import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;

Expand All @@ -29,8 +33,10 @@
import org.junit.Ignore;
import org.junit.Test;

import org.mockito.Mock;
import org.mockito.Mockito;

import org.mockito.MockitoAnnotations;
import org.sakaiproject.gradebookng.business.GradebookNgBusinessService;
import org.sakaiproject.gradebookng.business.exception.GbImportExportInvalidFileTypeException;
import org.sakaiproject.gradebookng.business.model.GbGradeInfo;
Expand All @@ -45,20 +51,32 @@
import org.sakaiproject.grading.api.Assignment;
import org.sakaiproject.grading.api.GradeDefinition;
import org.sakaiproject.user.api.User;
import org.sakaiproject.util.ResourceLoader;

/**
* Tests for the ImportGradesHelper class.
*/
public class TestImportGradesHelper {

private final Map<String, GbUser> USER_MAP = mockUserMap();
private GradebookNgBusinessService service;
@Mock private GradebookNgBusinessService service;
@Mock private ResourceLoader resourceLoader;

@Before
public void setUp() throws Exception {
service = Mockito.mock(GradebookNgBusinessService.class);
Assert.assertNotNull(service);
Mockito.when(service.getUserEidMap()).thenReturn(USER_MAP);
public void openMocks() throws NoSuchFieldException, IllegalAccessException {
MockitoAnnotations.openMocks(this);
setMockResourceLoader(FormatHelper.class, "RL");
setMockResourceLoader(ImportGradesHelper.class, "RL");


when(resourceLoader.getLocale()).thenReturn(Locale.getDefault());
Map<String, GbUser> mockStudents = mockUserMap();
when(service.getUserEidMap()).thenReturn(mockStudents);
}

private void setMockResourceLoader(Class clazz, String fieldName) throws NoSuchFieldException, IllegalAccessException {
Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(null, resourceLoader);
}

@Test
Expand Down

0 comments on commit aa099d4

Please sign in to comment.