package de.todesbaum.jsite.application; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import java.util.Optional; import org.junit.Test; /** * Unit test for {@link FileOption}. * * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a> */ public class FileOptionTest { private static final String DEFAULT_MIME_TYPE = "application/octet-stream"; private static final String DEFAULT_CUSTOM_KEY = "CHK@"; private static final String CUSTOM_KEY = "KSK@custom-key"; private static final String EMPTY_CUSTOM_KEY = ""; private static final boolean DEFAULT_INSERT = true; private static final boolean CUSTOM_INSERT = false; private static final boolean DEFAULT_FORCE_INSERT = false; private static final boolean CUSTOM_FORCE_INSERT = true; private static final boolean DEFAULT_INSERT_REDIRECT = true; private static final boolean CUSTOM_INSERT_REDIRECT = false; private static final String DEFAULT_LAST_INSERT_HASH = null; private static final String CUSTOM_LAST_INSERT_HASH = "last-insert-hash"; private static final int DEFAULT_LAST_INSERT_EDITION = 0; private static final int CUSTOM_LAST_INSERT_EDITION = 12345; private static final String DEFAULT_LAST_INSERT_FILENAME = null; private static final String CUSTOM_LAST_INSERT_FILENAME = "filename.dat"; private static final String DEFAULT_CURRENT_HASH = null; private static final String CUSTOM_CURRENT_HASH = "current-hash"; private static final Optional<?> DEFAULT_CHANGED_NAME = Optional.empty(); private static final String CUSTOM_CHANGED_NAME = "changed-name"; private static final String NULL_CHANGED_NAME = null; private static final String ZERO_LENGTH_CHANGED_NAME = ""; private static final String CUSTOM_MIME_TYPE = "custom/mime-type"; private static final String NULL_MIME_TYPE = null; private final FileOption fileOption = new FileOption(DEFAULT_MIME_TYPE); @Test public void defaultCustomKeyIsCHK() { assertThat(fileOption.getCustomKey(), is(DEFAULT_CUSTOM_KEY)); } @Test public void customKeyIsRetainedCorrectly() { fileOption.setCustomKey(CUSTOM_KEY); assertThat(fileOption.getCustomKey(), is(CUSTOM_KEY)); } @Test public void nullCustomKeyIsTurnedIntoEmptyCustomKey() { fileOption.setCustomKey(null); assertThat(fileOption.getCustomKey(), is(EMPTY_CUSTOM_KEY)); } @Test public void defaultInsertIsTrue() { assertThat(fileOption.isInsert(), is(DEFAULT_INSERT)); } @Test public void insertIsRetainedCorrectly() { fileOption.setInsert(CUSTOM_INSERT); assertThat(fileOption.isInsert(), is(CUSTOM_INSERT)); } @Test public void defaultForceInsertIsFalse() { assertThat(fileOption.isForceInsert(), is(DEFAULT_FORCE_INSERT)); } @Test public void customForceInsertIsRetainedCorrectly() { fileOption.setForceInsert(CUSTOM_FORCE_INSERT); assertThat(fileOption.isForceInsert(), is(CUSTOM_FORCE_INSERT)); } @Test public void defaultInsertRedirectIsTrue() { assertThat(fileOption.isInsertRedirect(), is(DEFAULT_INSERT_REDIRECT)); } @Test public void customInsertRedirectIsRetainedCorrectly() { fileOption.setInsertRedirect(CUSTOM_INSERT_REDIRECT); assertThat(fileOption.isInsertRedirect(), is(CUSTOM_INSERT_REDIRECT)); } @Test public void defaultLastInsertHashIsNull() { assertThat(fileOption.getLastInsertHash(), is(DEFAULT_LAST_INSERT_HASH)); } @Test public void lastInsertHashIsRetainedCorrectly() { fileOption.setLastInsertHash(CUSTOM_LAST_INSERT_HASH); assertThat(fileOption.getLastInsertHash(), is(CUSTOM_LAST_INSERT_HASH)); } @Test public void defaultLastInsertEditionIsZero() { assertThat(fileOption.getLastInsertEdition(), is(DEFAULT_LAST_INSERT_EDITION)); } @Test public void lastInsertEditionIsRetainedCorrectly() { fileOption.setLastInsertEdition(CUSTOM_LAST_INSERT_EDITION); assertThat(fileOption.getLastInsertEdition(), is(CUSTOM_LAST_INSERT_EDITION)); } @Test public void defaultLastInsertFilenameIsNull() { assertThat(fileOption.getLastInsertFilename(), is(DEFAULT_LAST_INSERT_FILENAME)); } @Test public void lastInsertFilenameIsRetainedCorrectly() { fileOption.setLastInsertFilename(CUSTOM_LAST_INSERT_FILENAME); assertThat(fileOption.getLastInsertFilename(), is(CUSTOM_LAST_INSERT_FILENAME)); } @Test public void defaultCurrentHashIsNull() { assertThat(fileOption.getCurrentHash(), is(DEFAULT_CURRENT_HASH)); } @Test public void currentHashIsRetainedCorrectly() { fileOption.setCurrentHash(CUSTOM_CURRENT_HASH); assertThat(fileOption.getCurrentHash(), is(CUSTOM_CURRENT_HASH)); } @Test public void defaultChangedNameIsEmpty() { assertThat(fileOption.getChangedName(), is(DEFAULT_CHANGED_NAME)); } @Test public void changedNameIsRetainedCorrectly() { fileOption.setChangedName(CUSTOM_CHANGED_NAME); assertThat(fileOption.getChangedName().get(), is(CUSTOM_CHANGED_NAME)); } @Test public void nullSetsChangedNameToEmpty() { fileOption.setChangedName(NULL_CHANGED_NAME); assertThat(fileOption.getChangedName(), is(DEFAULT_CHANGED_NAME)); } @Test public void zeroLengthStringSetsChangedNameToEmpty() { fileOption.setChangedName(ZERO_LENGTH_CHANGED_NAME); assertThat(fileOption.getChangedName(), is(DEFAULT_CHANGED_NAME)); } @Test public void defaultMimeTypeIsTheOneGivenInTheConstructor() { assertThat(fileOption.getMimeType(), is(DEFAULT_MIME_TYPE)); } @Test public void mimeTypeIsRetainedCorrectly() { fileOption.setMimeType(CUSTOM_MIME_TYPE); assertThat(fileOption.getMimeType(), is(CUSTOM_MIME_TYPE)); } @Test public void nullSetsMimeTypeBackToTheOneGivenInConstructor() { fileOption.setMimeType(NULL_MIME_TYPE); assertThat(fileOption.getMimeType(), is(DEFAULT_MIME_TYPE)); } @Test public void fileWithCustomInsertIsCustom() { fileOption.setInsert(CUSTOM_INSERT); assertThat(fileOption.isCustom(), is(true)); } @Test public void fileWithCustomKeyIsCustom() { fileOption.setCustomKey(CUSTOM_KEY); assertThat(fileOption.isCustom(), is(true)); } @Test public void fileWithChangedNameIsCustom() { fileOption.setChangedName(CUSTOM_CHANGED_NAME); assertThat(fileOption.isCustom(), is(true)); } @Test public void fileWithCustomMimeTypeIsCustom() { fileOption.setMimeType(CUSTOM_MIME_TYPE); assertThat(fileOption.isCustom(), is(true)); } @Test public void fileWithCustomInsertRedirectIsCustom() { fileOption.setInsertRedirect(CUSTOM_INSERT_REDIRECT); assertThat(fileOption.isCustom(), is(true)); } @Test public void unchangedFileIsNotCustom() { assertThat(fileOption.isCustom(), is(false)); } @Test public void copyConstructorCopiesAllProperties() { fileOption.setChangedName(CUSTOM_CHANGED_NAME); fileOption.setInsertRedirect(CUSTOM_INSERT_REDIRECT); fileOption.setInsert(CUSTOM_INSERT); fileOption.setMimeType(CUSTOM_MIME_TYPE); fileOption.setCurrentHash(CUSTOM_CURRENT_HASH); fileOption.setCustomKey(CUSTOM_KEY); fileOption.setForceInsert(CUSTOM_FORCE_INSERT); fileOption.setLastInsertEdition(CUSTOM_LAST_INSERT_EDITION); fileOption.setLastInsertFilename(CUSTOM_LAST_INSERT_FILENAME); fileOption.setLastInsertHash(CUSTOM_LAST_INSERT_HASH); fileOption.setCurrentHash(CUSTOM_CURRENT_HASH); FileOption copiedFileOption = new FileOption(fileOption); assertThat(copiedFileOption.getChangedName().get(), is(CUSTOM_CHANGED_NAME)); assertThat(copiedFileOption.isInsertRedirect(), is(CUSTOM_INSERT_REDIRECT)); assertThat(copiedFileOption.isInsert(), is(CUSTOM_INSERT)); assertThat(copiedFileOption.getMimeType(), is(CUSTOM_MIME_TYPE)); assertThat(copiedFileOption.getCurrentHash(), is(CUSTOM_CURRENT_HASH)); assertThat(copiedFileOption.getCustomKey(), is(CUSTOM_KEY)); assertThat(copiedFileOption.isForceInsert(), is(CUSTOM_FORCE_INSERT)); assertThat(copiedFileOption.getLastInsertEdition(), is(CUSTOM_LAST_INSERT_EDITION)); assertThat(copiedFileOption.getLastInsertFilename(), is(CUSTOM_LAST_INSERT_FILENAME)); assertThat(copiedFileOption.getLastInsertHash(), is(CUSTOM_LAST_INSERT_HASH)); assertThat(copiedFileOption.getCurrentHash(), is(CUSTOM_CURRENT_HASH)); } }