/** * This method knows about all the filters that openmrs uses for setup. Currently those are the * {@link InitializationFilter} and the {@link UpdateFilter}. If either of these have to do * something, openmrs won't start in this Listener. * * @return true if one of the filters needs to take some action */ private boolean setupNeeded() throws Exception { if (!runtimePropertiesFound) { return true; } return DatabaseUpdater.updatesRequired() && !DatabaseUpdater.allowAutoUpdate(); }
/** * Default constructor that sets up some of the properties */ public UpdateFilterModel() { updateChanges(); try { if (changes != null && !changes.isEmpty()) { updateRequired = true; } else { updateRequired = DatabaseUpdater.updatesRequired(); } } catch (Exception e) { // do nothing } }
/** * @throws LockException * @see DatabaseUpdater#updatesRequired() */ @Test public void updatesRequired_shouldAlwaysHaveAValidUpdateToLatestFile() throws LockException { // expects /metadata/model to be on the classpath so that // the liquibase-update-to-latest.xml can be found. try { DatabaseUpdater.updatesRequired(); } catch (RuntimeException rex) { log.error("Runtime Exception in test for Validation Errors"); } // does not run DatabaseUpdater.update() because hsqldb doesn't like single quotes in strings } }
@Test public void createUpdateFilterModel_shouldNotRequireAnUpdateIfChangesAreEmptyAndDatabaseUpdaterDoesNotRequireAnUpdate() throws Exception { when(DatabaseUpdater.getUnrunDatabaseChanges()).thenReturn(new ArrayList<>()); when(DatabaseUpdater.isLocked()).thenReturn(false); when(DatabaseUpdater.updatesRequired()).thenReturn(false); model = new UpdateFilterModel(); assertFalse("should not require an update", model.updateRequired); assertThat(model.changes, is(empty())); PowerMockito.verifyStatic(); DatabaseUpdater.getUnrunDatabaseChanges(); PowerMockito.verifyStatic(); DatabaseUpdater.updatesRequired(); }
@Test public void createUpdateFilterModel_shouldRequiredAnUpdateIfChangesAreEmptyButDatabaseUpdaterDoesRequireAnUpdate() throws Exception { when(DatabaseUpdater.getUnrunDatabaseChanges()).thenReturn(new ArrayList<>()); when(DatabaseUpdater.isLocked()).thenReturn(false); when(DatabaseUpdater.updatesRequired()).thenReturn(true); model = new UpdateFilterModel(); assertTrue("should require an update", model.updateRequired); assertThat(model.changes, is(empty())); PowerMockito.verifyStatic(); DatabaseUpdater.getUnrunDatabaseChanges(); PowerMockito.verifyStatic(); DatabaseUpdater.updatesRequired(); }
@Test public void createUpdateFilterModel_shouldNotRequireAnUpdateIfDatabaseUpdaterIsLockedAndCallingDatabaseUpdaterTwiceAlwaysReturnsNull() throws Exception { when(DatabaseUpdater.getUnrunDatabaseChanges()).thenReturn(null); when(DatabaseUpdater.isLocked()).thenReturn(true); when(DatabaseUpdater.updatesRequired()).thenReturn(false); model = new UpdateFilterModel(); assertFalse("should not require an update", model.updateRequired); assertNull("should not have changes", model.changes); PowerMockito.verifyStatic(times(2)); DatabaseUpdater.getUnrunDatabaseChanges(); PowerMockito.verifyStatic(); DatabaseUpdater.updatesRequired(); }
@Test public void createUpdateFilterModel_shouldRequireAnUpdateIfDatabaseUpdaterIsLockedAndChangesAreNotNull() throws Exception { OpenMRSChangeSet change = mock(OpenMRSChangeSet.class); List<OpenMRSChangeSet> changes = new ArrayList<>(); changes.add(change); when(DatabaseUpdater.getUnrunDatabaseChanges()).thenReturn(null, changes); when(DatabaseUpdater.isLocked()).thenReturn(true); model = new UpdateFilterModel(); assertTrue("should require an update", model.updateRequired); assertThat(model.changes, is(changes)); PowerMockito.verifyStatic(times(2)); DatabaseUpdater.getUnrunDatabaseChanges(); PowerMockito.verifyStatic(never()); DatabaseUpdater.updatesRequired(); } }
@Test public void createUpdateFilterModel_shouldNotRequireAnUpdateIfChangesAreNullAndDatabaseUpdaterDoesNotRequireAnUpdate() throws Exception { when(DatabaseUpdater.getUnrunDatabaseChanges()).thenReturn(null); when(DatabaseUpdater.isLocked()).thenReturn(false); when(DatabaseUpdater.updatesRequired()).thenReturn(false); model = new UpdateFilterModel(); assertFalse("should not require an update", model.updateRequired); assertNull("should not have changes", model.changes); PowerMockito.verifyStatic(); DatabaseUpdater.getUnrunDatabaseChanges(); PowerMockito.verifyStatic(); DatabaseUpdater.updatesRequired(); }
boolean updatesRequired; try { updatesRequired = DatabaseUpdater.updatesRequired();
@Test public void createUpdateFilterModel_shouldrequireAnUpdateAndSetChangesToUnrunDatabaseChangesIfChangesAreNonEmpty() throws Exception { OpenMRSChangeSet change = mock(OpenMRSChangeSet.class); List<OpenMRSChangeSet> changes = new ArrayList<>(); changes.add(change); when(DatabaseUpdater.getUnrunDatabaseChanges()).thenReturn(changes); when(DatabaseUpdater.isLocked()).thenReturn(false); model = new UpdateFilterModel(); assertTrue("should require an update", model.updateRequired); assertThat(model.changes, is(changes)); PowerMockito.verifyStatic(); DatabaseUpdater.getUnrunDatabaseChanges(); PowerMockito.verifyStatic(never()); DatabaseUpdater.updatesRequired(); }