aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/cgeo/geocaching/connector/oc/OCXMLTest.java
blob: 2e4855fc36578fc2482cd310a6b6fcac58a7acdf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package cgeo.geocaching.connector.oc;

import cgeo.CGeoTestCase;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.Settings;
import cgeo.geocaching.enumerations.CacheType;

import org.apache.commons.lang3.StringUtils;

import android.text.Html;

import java.util.Collection;

public class OCXMLTest extends CGeoTestCase {

    public static void testOCGetCache() {
        final String geoCode = "OCDE76";

        final Geocache cache = OCXMLClient.getCache(geoCode);
        assertNotNull(cache);
        assertEquals(geoCode, cache.getGeocode());
        assertEquals("Gitarrenspielplatz", cache.getName());
        assertEquals(CacheType.TRADITIONAL, cache.getType());
        assertEquals(2.0, cache.getDifficulty(), 0.1);
        assertEquals(2.0, cache.getTerrain(), 0.1);
    }

    public static void testOCLogAttendedAsFound() {

        final String oldOCName = Settings.getOCConnectorUserName();
        try {
            Settings.setOCConnectorUserName("ra_sch");
            final String geoCode = "OCD541";
            final Geocache cache = OCXMLClient.getCache(geoCode);
            assertNotNull(cache);

            assertTrue(cache.isFound());
        } finally {
            Settings.setOCConnectorUserName(oldOCName);
        }
    }

    public static void testOCOwner() {
        final String oldOCName = Settings.getOCConnectorUserName();
        try {
            Settings.setOCConnectorUserName("andi12.2");
            final String geoCode = "OCC9BE";
            final Geocache cache = OCXMLClient.getCache(geoCode);
            assertNotNull(cache);

            assertTrue(cache.isOwner());
            assertEquals("180571", cache.getOwnerUserId());
        } finally {
            Settings.setOCConnectorUserName(oldOCName);
        }
    }

    public static void testOC0537Description() {
        final String geoCode = "OC0537";
        final Geocache cache = OCXMLClient.getCache(geoCode);
        assertNotNull(cache);

        assertFalse(cache.getDescription().length() < 100);
    }

    public static void testNoArchivedInNearby() {

        final boolean oldExcludeDisabled = Settings.isExcludeDisabledCaches();
        final boolean oldExcludeMine = Settings.isExcludeMyCaches();
        try {
            Settings.setExcludeDisabledCaches(false);
            Settings.setExcludeMine(false);
            // get an archived cache
            final Geocache cache = OCXMLClient.getCache("OCD541");
            assertNotNull(cache);
            assertTrue(cache.isArchived());
            // Get nearby for this cache
            final Collection<Geocache> caches = OCXMLClient.getCachesAround(cache.getCoords(), 0.5);
            // Should not be in the result!
            assertFalse(caches.contains(cache));
        } finally {
            Settings.setExcludeDisabledCaches(oldExcludeDisabled);
            Settings.setExcludeMine(oldExcludeMine);
        }
    }

    public static void testFetchTwiceDuplicatesDescription() {
        final String geoCode = "OCEFBA";
        final String description = "Bei dem Cache kannst du einen kleinen Schatz bergen. Bitte lege aber einen ander Schatz in das Döschen. Achtung vor Automuggels.";

        deleteCacheFromDB(geoCode);
        Geocache cache = OCXMLClient.getCache(geoCode);
        assertNotNull(cache);
        try {
            assertEquals(geoCode, cache.getGeocode());
            // ignore copyright as the date part will change all the time
            assertEquals(description, removeCopyrightAndTags(cache.getDescription()));
            cache.store(null);

            // reload, make sure description is not duplicated
            cache = OCXMLClient.getCache(geoCode);
            assertNotNull(cache);
            assertEquals(description, removeCopyrightAndTags(cache.getDescription()));
        } finally {
            deleteCacheFromDB(geoCode);
        }
    }

    private static String removeCopyrightAndTags(String input) {
        return Html.fromHtml(StringUtils.substringBefore(input, "&copy")).toString().trim();
    }

    public static void testRemoveMarkup() {
        assertEquals("", OC11XMLParser.stripMarkup(""));
        assertEquals("Test", OC11XMLParser.stripMarkup("Test"));
        assertEquals("<b>bold and others not removed</b>", OC11XMLParser.stripMarkup("<b>bold and others not removed</b>"));
        assertEquals("unnecessary paragraph", OC11XMLParser.stripMarkup("<p>unnecessary paragraph</p>"));
        assertEquals("unnecessary span", OC11XMLParser.stripMarkup("<span>unnecessary span</span>"));
        assertEquals("nested", OC11XMLParser.stripMarkup("<span><span>nested</span></span>"));
        assertEquals("mixed", OC11XMLParser.stripMarkup("<span> <p> mixed </p> </span>"));
        assertEquals("<p>not</p><p>removable</p>", OC11XMLParser.stripMarkup("<p>not</p><p>removable</p>"));
    }
}