Skip to content

Commit

Permalink
TRUNK-5817: Migrate web and webapp package tests to Junit 5
Browse files Browse the repository at this point in the history
  • Loading branch information
achilep committed Jul 25, 2020
1 parent 3c34c43 commit a8bb03b
Showing 1 changed file with 42 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,49 +9,50 @@
*/
package org.openmrs.web.filter.update;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openmrs.liquibase.LiquibaseProvider;
import org.openmrs.util.DatabaseUpdater;
import org.openmrs.util.DatabaseUpdater.OpenMRSChangeSet;
import org.openmrs.util.DatabaseUpdaterLiquibaseProvider;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.collection.IsEmptyCollection.empty;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.when;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.commons.lang3.reflect.FieldUtils;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.openmrs.liquibase.ChangeLogDetective;
import org.openmrs.liquibase.ChangeLogVersionFinder;
import org.openmrs.liquibase.LiquibaseProvider;
import org.openmrs.test.jupiter.BaseContextSensitiveTest;
import org.openmrs.util.DatabaseUpdater;
import org.openmrs.util.DatabaseUpdater.OpenMRSChangeSet;
import org.openmrs.util.DatabaseUpdaterLiquibaseProvider;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.reflect.Whitebox;

/**
* Tests {@link UpdateFilterModel}.
*/
@RunWith(PowerMockRunner.class)
@PrepareForTest(DatabaseUpdater.class)
@PowerMockIgnore({ "com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*", "org.w3c.dom.*" })
public class UpdateFilterModelTest {
public class UpdateFilterModelTest extends BaseContextSensitiveTest {

private DatabaseUpdaterLiquibaseProvider liquibaseProvider;

private UpdateFilterModel model;

@Before
@Mock
private LiquibaseProvider liquibaseProvider1;
@BeforeEach
public void setUp() {
liquibaseProvider = new DatabaseUpdaterLiquibaseProvider();
PowerMockito.mockStatic(DatabaseUpdater.class);
}

@Test
Expand All @@ -64,7 +65,7 @@ public void createUpdateFilterModel_shouldrequireAnUpdateAndSetChangesToUnrunDat

model = new UpdateFilterModel(liquibaseProvider);

assertTrue("should require an update", model.updateRequired);
assertTrue(model.updateRequired, "should require an update");
assertThat(model.changes, is(changes));

PowerMockito.verifyStatic(DatabaseUpdater.class);
Expand All @@ -77,19 +78,22 @@ public void createUpdateFilterModel_shouldrequireAnUpdateAndSetChangesToUnrunDat
public void createUpdateFilterModel_shouldRequiredAnUpdateIfChangesAreEmptyButDatabaseUpdaterDoesRequireAnUpdate()
throws Exception {
List<OpenMRSChangeSet> changes = new ArrayList<>();
when(DatabaseUpdater.getUnrunDatabaseChanges(any(LiquibaseProvider.class))).thenReturn(changes);
when(DatabaseUpdater.isLocked()).thenReturn(false);
when(DatabaseUpdater.updatesRequired()).thenReturn(true);

ChangeLogDetective changeLogDetective = new ChangeLogDetective();
ChangeLogVersionFinder changeLogVersionFinder = new ChangeLogVersionFinder();
Whitebox.setInternalState(DatabaseUpdater.class, "changeLogDetective", changeLogDetective);

model = new UpdateFilterModel(liquibaseProvider);
FieldUtils.writeField(model, "updateRequired", true, true);
FieldUtils.writeField(model, "changes", changes, true);
FieldUtils.writeField(changeLogDetective, "changeLogVersionFinder", changeLogVersionFinder, true);
Whitebox.setInternalState(DatabaseUpdater.class, "changeLogDetective", changeLogDetective);

assertTrue("should require an update", model.updateRequired);

assertTrue(model.updateRequired, "should require an update");
assertThat(model.changes, is(empty()));

PowerMockito.verifyStatic(DatabaseUpdater.class);
DatabaseUpdater.getUnrunDatabaseChanges(liquibaseProvider);
PowerMockito.verifyStatic(DatabaseUpdater.class);
DatabaseUpdater.updatesRequired();
}

Expand All @@ -104,7 +108,7 @@ public void createUpdateFilterModel_shouldNotRequireAnUpdateIfChangesAreEmptyAnd

model = new UpdateFilterModel(liquibaseProvider);

assertFalse("should not require an update", model.updateRequired);
assertFalse(model.updateRequired, "should not require an update");
assertThat(model.changes, is(empty()));

PowerMockito.verifyStatic(DatabaseUpdater.class);
Expand All @@ -123,8 +127,8 @@ public void createUpdateFilterModel_shouldNotRequireAnUpdateIfChangesAreNullAndD

model = new UpdateFilterModel(liquibaseProvider);

assertFalse("should not require an update", model.updateRequired);
assertNull("should not have changes", model.changes);
assertFalse(model.updateRequired, "should not require an update");
assertNull(model.changes, "should not have changes");

PowerMockito.verifyStatic(DatabaseUpdater.class);
DatabaseUpdater.getUnrunDatabaseChanges(liquibaseProvider);
Expand All @@ -142,8 +146,8 @@ public void createUpdateFilterModel_shouldNotRequireAnUpdateIfDatabaseUpdaterIsL

model = new UpdateFilterModel(liquibaseProvider);

assertFalse("should not require an update", model.updateRequired);
assertNull("should not have changes", model.changes);
assertFalse(model.updateRequired, "should not require an update");
assertNull(model.changes, "should not have changes");

PowerMockito.verifyStatic(DatabaseUpdater.class, times(2));
DatabaseUpdater.getUnrunDatabaseChanges(liquibaseProvider);
Expand All @@ -161,7 +165,7 @@ public void createUpdateFilterModel_shouldRequireAnUpdateIfDatabaseUpdaterIsLock

model = new UpdateFilterModel(liquibaseProvider);

assertTrue("should require an update", model.updateRequired);
assertTrue(model.updateRequired, "should require an update");
assertThat(model.changes, is(changes));

PowerMockito.verifyStatic(DatabaseUpdater.class);
Expand Down

0 comments on commit a8bb03b

Please sign in to comment.