Changeset 18793 in josm for trunk/test/unit/org


Ignore:
Timestamp:
2023-08-07T19:39:39+02:00 (15 months ago)
Author:
taylor.smock
Message:

Fix #23091: Opening a preset from inside a relation editor causes a DataIntegrityProblemException

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java

    r17275 r18793  
    55import static org.junit.jupiter.api.Assertions.assertNotNull;
    66import static org.junit.jupiter.api.Assertions.assertNull;
     7import static org.junit.jupiter.api.Assertions.assertSame;
    78
     9import java.util.Collection;
    810import java.util.Collections;
    911
     
    1113import javax.swing.JPanel;
    1214
     15import mockit.Mock;
     16import mockit.MockUp;
    1317import org.junit.jupiter.api.Test;
    14 import org.junit.jupiter.api.extension.RegisterExtension;
     18import org.junit.platform.commons.support.ReflectionSupport;
    1519import org.openstreetmap.josm.TestUtils;
    1620import org.openstreetmap.josm.data.osm.DataSet;
     
    1923import org.openstreetmap.josm.data.osm.Relation;
    2024import org.openstreetmap.josm.data.osm.Way;
     25import org.openstreetmap.josm.gui.dialogs.relation.actions.IRelationEditorActionAccess;
     26import org.openstreetmap.josm.gui.dialogs.relation.actions.PasteMembersAction;
    2127import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    2228import org.openstreetmap.josm.gui.tagging.TagEditorPanel;
    2329import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
    24 import org.openstreetmap.josm.testutils.JOSMTestRules;
     30import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetHandler;
     31import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
     32import org.openstreetmap.josm.testutils.annotations.Main;
    2533import org.openstreetmap.josm.testutils.mockers.JOptionPaneSimpleMocker;
    26 
    27 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
    2834
    2935/**
    3036 * Unit tests of {@link GenericRelationEditor} class.
    3137 */
     38@BasicPreferences
     39@Main
    3240public class GenericRelationEditorTest {
    33 
    34     /**
    35      * Setup test.
    36      */
    37     @RegisterExtension
    38     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
    39     public JOSMTestRules test = new JOSMTestRules().preferences().main();
    40 
    4141    /**
    4242     * Returns a new relation editor for unit tests.
     
    133133        assertNotNull(tagEditorPanel.getModel());
    134134    }
     135
     136    @Test
     137    void testNonRegression23091() throws Exception {
     138        new MockUp<PasteMembersAction>() {
     139            @Mock
     140            protected void updateEnabledState() {
     141                // Do nothing
     142            }
     143        };
     144
     145        DataSet ds = new DataSet();
     146        Relation relation = new Relation(1);
     147        ds.addPrimitive(relation);
     148        OsmDataLayer layer = new OsmDataLayer(ds, "test", null);
     149
     150        final GenericRelationEditor gr = new GenericRelationEditor(layer, relation, Collections.emptyList());
     151        final IRelationEditorActionAccess iAccess = (IRelationEditorActionAccess)
     152                ReflectionSupport.tryToReadFieldValue(GenericRelationEditor.class.getDeclaredField("actionAccess"), gr)
     153                        .get();
     154        final TaggingPresetHandler handler = (TaggingPresetHandler)
     155                ReflectionSupport.tryToReadFieldValue(MemberTableModel.class.getDeclaredField("presetHandler"), iAccess.getMemberTableModel())
     156                        .get();
     157        final Collection<OsmPrimitive> selection = handler.getSelection();
     158        assertEquals(1, selection.size());
     159        assertSame(relation, selection.iterator().next(), "The selection should be the same");
     160    }
    135161}
Note: See TracChangeset for help on using the changeset viewer.