package org.openlmis.core.view.viewmodel;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openlmis.core.LMISTestRunner;
import org.openlmis.core.manager.MovementReasonManager;
import org.openlmis.core.model.ProgramDataColumn;
import org.openlmis.core.model.ProgramDataFormItem;
import java.util.List;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
@RunWith(LMISTestRunner.class)
public class RapidTestFormGridViewModelTest {
RapidTestFormGridViewModel viewModel = new RapidTestFormGridViewModel(RapidTestFormGridViewModel.ColumnCode.Malaria);
@Test
public void shouldValidate() throws Exception {
assertTrue(viewModel.validate());
viewModel.setConsumptionValue("100");
assertFalse(viewModel.validate());
viewModel.setPositiveValue("100");
viewModel.setConsumptionValue("");
assertFalse(viewModel.validate());
viewModel.setConsumptionValue("99");
assertFalse(viewModel.validate());
viewModel.setConsumptionValue("100");
assertTrue(viewModel.validate());
}
@Test
public void shouldConvertFormGridViewModelToDataModel() throws Exception {
viewModel.setConsumptionValue("20");
viewModel.setPositiveValue("1001");
ProgramDataColumn consumeColumn = new ProgramDataColumn();
consumeColumn.setCode("CONSUME_MALARIA");
viewModel.setConsumeColumn(consumeColumn);
ProgramDataColumn positiveColumn = new ProgramDataColumn();
positiveColumn.setCode("POSITIVE_MALARIA");
viewModel.setPositiveColumn(positiveColumn);
MovementReasonManager.MovementReason reason = new MovementReasonManager.MovementReason(MovementReasonManager.MovementType.ISSUE, "ACC_EMERGENCY", "Acc emergency");
List<ProgramDataFormItem> programDataFormItems = viewModel.convertFormGridViewModelToDataModel(reason);
assertThat(programDataFormItems.get(0).getName(), is("ACC_EMERGENCY"));
assertThat(programDataFormItems.get(0).getProgramDataColumn().getCode(), is("CONSUME_MALARIA"));
assertThat(programDataFormItems.get(0).getValue(), is(20));
assertThat(programDataFormItems.get(1).getName(), is("ACC_EMERGENCY"));
assertThat(programDataFormItems.get(1).getProgramDataColumn().getCode(), is("POSITIVE_MALARIA"));
assertThat(programDataFormItems.get(1).getValue(), is(1001));
}
}