Ticket #23509: 23509.patch
| File 23509.patch, 4.9 KB (added by , 2 years ago) |
|---|
-
test/data/regress/22817/data.osm
1 <?xml version='1.0' encoding='UTF-8'?> 2 <osm version='0.6' generator='JOSM'> 3 <node id='-25355' action='modify' visible='true' lat='53.04826158018' lon='8.42094221501' /> 4 </osm> -
test/unit/org/openstreetmap/josm/gui/io/SaveLayersDialogTest.java
8 8 import java.awt.Component; 9 9 import java.awt.GraphicsEnvironment; 10 10 import java.io.File; 11 import java.io.FileInputStream; 12 import java.io.IOException; 13 import java.io.InputStream; 11 14 import java.util.Collections; 12 15 import java.util.List; 13 16 … … 16 19 import javax.swing.JList; 17 20 import javax.swing.JOptionPane; 18 21 19 import mockit.Invocation;20 import mockit.Mock;21 import mockit.MockUp;22 22 import org.junit.jupiter.api.Test; 23 23 import org.junit.jupiter.params.ParameterizedTest; 24 24 import org.junit.jupiter.params.provider.EnumSource; 25 import org.openstreetmap.josm.command.AddPrimitivesCommand; 26 import org.openstreetmap.josm.data.coor.LatLon; 25 import org.openstreetmap.josm.TestUtils; 27 26 import org.openstreetmap.josm.data.osm.DataSet; 28 import org.openstreetmap.josm.data.osm.Node;29 27 import org.openstreetmap.josm.data.osm.UploadPolicy; 30 28 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 29 import org.openstreetmap.josm.io.IllegalDataException; 30 import org.openstreetmap.josm.io.OsmReader; 31 31 import org.openstreetmap.josm.testutils.annotations.BasicPreferences; 32 32 import org.openstreetmap.josm.testutils.mockers.JOptionPaneSimpleMocker; 33 33 import org.openstreetmap.josm.testutils.mockers.WindowMocker; 34 34 35 import mockit.Invocation; 36 import mockit.Mock; 37 import mockit.MockUp; 38 35 39 /** 36 40 * Unit tests of {@link SaveLayersDialog} class. 37 41 */ … … 125 129 /** 126 130 * Non-regression test for #22817: No warning when deleting a layer with changes and discourages upload 127 131 * @param policy The upload policy to test 132 * @throws IOException if an error occurs 133 * @throws IllegalDataException if an error occurs 128 134 */ 129 135 @ParameterizedTest 130 136 @EnumSource(value = UploadPolicy.class) 131 void testNonRegression22817(UploadPolicy policy) { 132 final OsmDataLayer osmDataLayer = new OsmDataLayer(new DataSet(), null, null); 137 void testNonRegression22817(UploadPolicy policy) throws IOException, IllegalDataException { 138 File file = new File(TestUtils.getRegressionDataFile(22817, "data.osm")); 139 InputStream is = new FileInputStream(file); 140 final OsmDataLayer osmDataLayer = new OsmDataLayer(OsmReader.parseDataSet(is, null), null, null); 141 osmDataLayer.onPostLoadFromFile(); 133 142 osmDataLayer.getDataSet().setUploadPolicy(policy); 134 // BLOCKED files don't have a way to become blocked via the UI, so they must be loaded from disk. 135 if (policy == UploadPolicy.BLOCKED) { 136 osmDataLayer.setAssociatedFile(new File("/dev/null")); 137 } 138 new AddPrimitivesCommand(Collections.singletonList(new Node(LatLon.ZERO).save()), Collections.emptyList(), osmDataLayer.getDataSet()) 139 .executeCommand(); 143 osmDataLayer.setAssociatedFile(file); 140 144 assertTrue(osmDataLayer.getDataSet().isModified()); 145 assertFalse(osmDataLayer.requiresSaveToFile()); 146 assertTrue(osmDataLayer.getDataSet().requiresUploadToServer()); 147 assertEquals(policy != UploadPolicy.BLOCKED, osmDataLayer.requiresUploadToServer()); 148 assertEquals(policy != UploadPolicy.BLOCKED, osmDataLayer.isUploadable()); 141 149 new WindowMocker(); 142 150 // Needed since the *first call* is to check whether we are in a headless environment 143 151 new GraphicsEnvironmentMock(); 144 152 // Needed since we need to mock out the UI 145 153 SaveLayersDialogMock saveLayersDialogMock = new SaveLayersDialogMock(); 154 assertTrue(SaveLayersDialog.saveUnsavedModifications(Collections.singleton(osmDataLayer), SaveLayersDialog.Reason.DELETE)); 155 int res = saveLayersDialogMock.getUserActionCalled; 156 if (policy == UploadPolicy.NORMAL) { 157 assertEquals(1, res, "The user should have been asked for an action on the layer"); 158 } else { 159 assertEquals(0, res, "The user should not have been asked for an action on the layer"); 146 160 147 assertTrue(SaveLayersDialog.saveUnsavedModifications(Collections.singleton(osmDataLayer), SaveLayersDialog.Reason.DELETE)); 148 assertEquals(1, saveLayersDialogMock.getUserActionCalled, "The user should have been asked for an action on the layer"); 161 } 149 162 } 150 163 151 164 private static class GraphicsEnvironmentMock extends MockUp<GraphicsEnvironment> {
