/** * Copyright (c) 2015 Pawel Nowak. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.eclipse.recommenders.internal.news.rcp; import static org.eclipse.recommenders.internal.news.rcp.FeedDescriptors.*; import static org.eclipse.recommenders.internal.news.rcp.TestUtils.*; import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.Matchers.empty; import static org.junit.Assert.assertThat; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @RunWith(MockitoJUnitRunner.class) public class FeedDescriptorsTest { private static final String FIRST_ELEMENT = "first"; private static final String SECOND_ELEMENT = "second"; private static final String THIRD_ELEMENT = "third"; private static final String UNINSTALLED_ELEMENT = "uninstalled"; private static final String EMPTY_STRING = ""; private static final String EMPTY_JSON_STRING = "[]"; @Test public void testLoadedSettingsIgnoresDefaultEnablement() { List<FeedDescriptor> result = FeedDescriptors.load( FIRST_ELEMENT + SEPARATOR + DISABLED_FLAG + SECOND_ELEMENT + SEPARATOR + THIRD_ELEMENT, ImmutableList.of(enabled(FIRST_ELEMENT), enabled(SECOND_ELEMENT), disabled(THIRD_ELEMENT))); assertThat(result.get(0).getId(), is(equalTo(FIRST_ELEMENT))); assertThat(result.get(0).isEnabled(), is(true)); assertThat(result.get(1).getId(), is(equalTo(SECOND_ELEMENT))); assertThat(result.get(1).isEnabled(), is(false)); assertThat(result.get(2).getId(), is(equalTo(THIRD_ELEMENT))); assertThat(result.get(2).isEnabled(), is(true)); assertThat(result.size(), is(3)); } @Test public void testLoadIgnoresUnknownFeeds() { List<FeedDescriptor> result = FeedDescriptors.load( FIRST_ELEMENT + SEPARATOR + DISABLED_FLAG + UNINSTALLED_ELEMENT + SEPARATOR + SECOND_ELEMENT, ImmutableList.of(enabled(FIRST_ELEMENT), enabled(SECOND_ELEMENT))); assertThat(result.get(0).getId(), is(equalTo(FIRST_ELEMENT))); assertThat(result.get(0).isEnabled(), is(true)); assertThat(result.get(1).getId(), is(equalTo(SECOND_ELEMENT))); assertThat(result.get(1).isEnabled(), is(true)); assertThat(result.size(), is(2)); } @Test public void testLoadEmptyString() { List<FeedDescriptor> result = FeedDescriptors.load(EMPTY_STRING, ImmutableList.of(enabled(FIRST_ELEMENT), disabled(SECOND_ELEMENT))); assertThat(result.get(0).getId(), is(equalTo(FIRST_ELEMENT))); assertThat(result.get(0).isEnabled(), is(true)); assertThat(result.get(1).getId(), is(equalTo(SECOND_ELEMENT))); assertThat(result.get(1).isEnabled(), is(false)); assertThat(result.size(), is(2)); } @Test public void testLoadPrependsNewFeeds() { List<FeedDescriptor> result = FeedDescriptors.load(THIRD_ELEMENT, ImmutableList.of(enabled(FIRST_ELEMENT), disabled(SECOND_ELEMENT), enabled(THIRD_ELEMENT))); assertThat(result.get(0).getId(), is(equalTo(THIRD_ELEMENT))); assertThat(result.get(0).isEnabled(), is(true)); assertThat(result.get(1).getId(), is(equalTo(FIRST_ELEMENT))); assertThat(result.get(1).isEnabled(), is(true)); assertThat(result.get(2).getId(), is(equalTo(SECOND_ELEMENT))); assertThat(result.get(2).isEnabled(), is(false)); assertThat(result.size(), is(3)); } @Test public void testLoadCustomFeedsEmptyString() { List<FeedDescriptor> result = FeedDescriptors.getFeeds(""); assertThat(result, is(empty())); } @Test public void testStoreFeedsList() { String result = FeedDescriptors.feedsToString( ImmutableList.of(enabled(FIRST_ELEMENT), disabled(SECOND_ELEMENT), enabled(THIRD_ELEMENT))); assertThat(result, is(equalTo(FIRST_ELEMENT + SEPARATOR + DISABLED_FLAG + SECOND_ELEMENT + SEPARATOR + THIRD_ELEMENT))); } @SuppressWarnings({ "rawtypes", "unchecked" }) @Test public void testStoreAndLoadCustomFeedsList() { String result = FeedDescriptors .customFeedsToString(ImmutableList.of(enabled(FIRST_ELEMENT), disabled(SECOND_ELEMENT))); ArrayList<FeedDescriptor> actual = (ArrayList) FeedDescriptors.getFeeds(result); ArrayList<FeedDescriptor> expected = Lists.newArrayList(enabled(FIRST_ELEMENT), disabled(SECOND_ELEMENT)); assertThat(actual, is(equalTo(expected))); } @Test public void testStoreCustomFeedsEmptyList() { ImmutableList<FeedDescriptor> emptyList = ImmutableList.of(); String result = FeedDescriptors.customFeedsToString(emptyList); assertThat(result, is(equalTo(EMPTY_JSON_STRING))); } @Test public void testStoreEmptyList() { ImmutableList<FeedDescriptor> emptyList = ImmutableList.of(); String result = FeedDescriptors.feedsToString(emptyList); assertThat(result, is(equalTo(EMPTY_STRING))); } @Test public void testStoreDescriptorMultipleTimes() { String result = FeedDescriptors.feedsToString(ImmutableList.of(enabled(FIRST_ELEMENT), disabled(SECOND_ELEMENT), enabled(THIRD_ELEMENT), disabled(FIRST_ELEMENT))); assertThat(result, is(equalTo(FIRST_ELEMENT + SEPARATOR + DISABLED_FLAG + SECOND_ELEMENT + SEPARATOR + THIRD_ELEMENT))); } }