package cgeo.geocaching.connector.trackable;
import static org.assertj.core.api.Java6Assertions.assertThat;
import cgeo.geocaching.models.Trackable;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.test.AbstractResourceInstrumentationTestCase;
import cgeo.geocaching.test.R;
import org.apache.commons.compress.utils.IOUtils;
import org.xml.sax.InputSource;
import java.io.InputStream;
import java.util.List;
public class GeolutinsParserTest extends AbstractResourceInstrumentationTestCase {
public void testParse() {
final List<Trackable> trackables1 = GeolutinsParser.parse(new InputSource(getResourceStream(R.raw.geolutins19_xml)));
assertThat(trackables1).hasSize(2);
// Check Geolutins in list
final Trackable trackable1 = trackables1.get(0);
assertThat(trackable1.getName()).isEqualTo("c:geo tests");
assertThat(trackable1.getGeocode()).isEqualTo("GL007B8");
assertThat(trackable1.getDetails()).isEqualTo("Virtual GeoLutins for testing c:geo android application.");
assertThat(trackable1.getType()).isNull();
assertThat(trackable1.getOwner()).isEqualTo("kumy");
// Check the same xml but pretty printed
final Trackable trackable2 = trackables1.get(1);
assertThat(trackable1.getName()).isEqualTo(trackable2.getName());
assertThat(trackable1.getGeocode()).isEqualTo(trackable2.getGeocode());
assertThat(trackable1.getDetails()).isEqualTo(trackable2.getDetails());
assertThat(trackable1.getType()).isEqualTo(trackable2.getType());
assertThat(trackable1.getOwner()).isEqualTo(trackable2.getOwner());
// Another GL with logs
final List<Trackable> trackables2 = GeolutinsParser.parse(new InputSource(getResourceStream(R.raw.geolutins1_xml)));
assertThat(trackables2).hasSize(1);
// Check Geolutins in list
final Trackable trackable3 = trackables2.get(0);
assertThat(trackable3.getName()).isEqualTo("Géolutin #1");
assertThat(trackable3.getGeocode()).isEqualTo("GL00001");
assertThat(trackable3.getDetails()).isEqualTo("Je suis le premier Géolutin ! Mon but est simple : voyager le plus possible afin de faire découvrir mes futurs copains !<br><br>");
assertThat(trackable3.getType()).isNull();
assertThat(trackable3.getOwner()).isEqualTo("redregis");
assertThat(trackable3.getLogs()).hasSize(23);
}
public static void testService() {
final InputStream page = Network.getResponseStream(Network.getRequest("http://www.geolutins.com/xml/api.php?G=GL007B8"));
assertThat(page).isNotNull();
try {
final List<Trackable> trackables1 = GeolutinsParser.parse(new InputSource(page));
assertThat(trackables1).hasSize(1);
// Check Geolutins in list
final Trackable trackable1 = trackables1.get(0);
assertThat(trackable1.getName()).isEqualTo("c:geo tests");
assertThat(trackable1.getGeocode()).isEqualTo("GL007B8");
assertThat(trackable1.getDetails()).isEqualTo("Virtual GeoLutins for testing c:geo android application.");
assertThat(trackable1.getOwner()).isEqualTo("kumy");
} finally {
IOUtils.closeQuietly(page);
}
}
}