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


Ignore:
Timestamp:
2022-06-13T23:40:17+02:00 (3 years ago)
Author:
taylor.smock
Message:

Fix #20823: Reject uploads that do not follow either comment policy or source policy (patch by ljdelight)

This fixes an issue where a the length of the comment or source was checked first,
and a warning instead of a rejection was generated when the upload policy would
have otherwise rejected the comment or source.

This also performs the validation check first, prior to the user being able to
make changes in the upload dialog UI, so that the initial dialog state matches
the upload policy.

Location:
trunk/test/unit/org/openstreetmap/josm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/gui/io/UploadTextComponentValidatorTest.java

    r18037 r18491  
    55import static org.hamcrest.MatcherAssert.assertThat;
    66
     7import java.util.Arrays;
     8import java.util.function.BiFunction;
     9import java.util.stream.Stream;
     10
    711import javax.swing.JLabel;
    812import javax.swing.JTextField;
    913
    1014import org.junit.jupiter.api.Test;
     15import org.junit.jupiter.params.ParameterizedTest;
     16import org.junit.jupiter.params.provider.Arguments;
     17import org.junit.jupiter.params.provider.MethodSource;
     18import org.openstreetmap.josm.spi.preferences.Config;
    1119import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
    1220
     
    4048        assertThat(feedback.getText(), containsString("Thank you for providing the data source"));
    4149    }
     50
     51    static Stream<Arguments> testUploadWithMandatoryTerm() {
     52        return Stream.of(Arguments.of("upload.comment.mandatory-terms", "Thank you for providing a changeset comment",
     53                    (BiFunction<JTextField, JLabel, ? extends UploadTextComponentValidator>)
     54                            UploadTextComponentValidator.UploadCommentValidator::new),
     55                Arguments.of("upload.source.mandatory-terms", "Thank you for providing the data source",
     56                    (BiFunction<JTextField, JLabel, ? extends UploadTextComponentValidator>)
     57                            UploadTextComponentValidator.UploadSourceValidator::new)
     58        );
     59    }
     60
     61    /**
     62     * Unit test of {@link UploadTextComponentValidator.UploadCommentValidator} and
     63     * {@link UploadTextComponentValidator.UploadSourceValidator} with mandatory terms
     64     */
     65    @BasicPreferences
     66    @ParameterizedTest
     67    @MethodSource
     68    void testUploadWithMandatoryTerm(String confPref, String expectedText,
     69            BiFunction<JTextField, JLabel, ? extends UploadTextComponentValidator> validatorSupplier) {
     70        Config.getPref().putList(confPref, Arrays.asList("myrequired", "xyz"));
     71        JTextField textField = new JTextField("");
     72        JLabel feedback = new JLabel();
     73
     74        validatorSupplier.apply(textField, feedback);
     75
     76        // A too-short string should fail validation
     77        textField.setText("");
     78        assertThat(feedback.getText(), containsString("The following required terms are missing: [myrequired, xyz]"));
     79
     80        // A long enough string without the mandatory terms should claim that the required terms are missing
     81        textField.setText("a string long enough but missing the mandatory term");
     82        assertThat(feedback.getText(), containsString("The following required terms are missing: [myrequired, xyz]"));
     83
     84        // A valid string should pass
     85        textField.setText("a string long enough with the mandatory term #myrequired #xyz");
     86        assertThat(feedback.getText(), containsString(expectedText));
     87    }
    4288}
  • trunk/test/unit/org/openstreetmap/josm/testutils/annotations/BasicPreferences.java

    r18037 r18491  
    5757            // Disable saving on put, just to avoid overwriting pref files
    5858            pref.enableSaveOnPut(false);
     59            pref.resetToDefault();
    5960            Config.setPreferencesInstance(pref);
    6061            Config.setBaseDirectoriesProvider(JosmBaseDirectories.getInstance());
Note: See TracChangeset for help on using the changeset viewer.