This project has retired. For details please refer to its
Attic page.
XFNExtractorTest xref
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.any23.extractor.html;
19
20 import org.apache.any23.extractor.ExtractorFactory;
21 import org.apache.any23.rdf.RDFUtils;
22 import org.apache.any23.vocab.FOAF;
23 import org.apache.any23.vocab.SINDICE;
24 import org.apache.any23.vocab.XFN;
25 import org.junit.Assert;
26 import org.junit.Test;
27 import org.eclipse.rdf4j.model.Resource;
28 import org.eclipse.rdf4j.model.IRI;
29 import org.eclipse.rdf4j.model.vocabulary.RDF;
30 import org.eclipse.rdf4j.repository.RepositoryException;
31
32
33
34
35
36
37 public class XFNExtractorTest extends AbstractExtractorTestCase {
38
39 private static final FOAF vFOAF = FOAF.getInstance();
40 private static final SINDICE vSINDICE = SINDICE.getInstance();
41 private static final XFN vXFN = XFN.getInstance();
42
43 private final static IRI bobsHomepage = baseIRI;
44
45 private final static IRI alicesHomepage = RDFUtils.iri("http://alice.example.com/");
46
47 private final static IRI charliesHomepage = RDFUtils.iri("http://charlie.example.com/");
48
49 protected ExtractorFactory<?> getExtractorFactory() {
50 return new XFNExtractorFactory();
51 }
52
53 @Test
54 public void testNoMicroformats() throws RepositoryException {
55 assertExtract("/html/html-without-uf.html");
56 assertModelEmpty();
57 }
58
59 @Test
60 public void testLinkWithoutRel() throws RepositoryException {
61 assertExtract("/microformats/xfn/no-rel.html");
62 assertModelEmpty();
63 }
64
65 @Test
66 public void testNoXFNRel() throws RepositoryException {
67 assertExtract("/microformats/xfn/no-valid-rel.html");
68 assertModelEmpty();
69 }
70
71 @Test
72 public void testDetectPresenceOfXFN() throws RepositoryException {
73 assertExtract("/microformats/xfn/simple-me.html");
74 }
75
76 @Test
77 public void testSimpleMeLink() throws RepositoryException {
78 assertExtract("/microformats/xfn/simple-me.html");
79 Resource person = findExactlyOneBlankSubject(RDF.TYPE, vFOAF.Person);
80 assertContains(person, vXFN.mePage, baseIRI);
81 assertContains(person, vXFN.mePage, bobsHomepage);
82 }
83
84 @Test
85 public void testRelativeIRIisResolvedAgainstBase() throws RepositoryException {
86 assertExtract("/microformats/xfn/with-relative-uri.html");
87 assertContains(null, vXFN.mePage, RDFUtils.iri("http://bob.example.com/foo"));
88 }
89
90 @Test
91 public void testParseTagSoup() throws RepositoryException {
92 assertExtract("/microformats/xfn/tagsoup.html");
93 Resource person = findExactlyOneBlankSubject(RDF.TYPE, vFOAF.Person);
94 assertContains(person, vXFN.mePage, baseIRI);
95 }
96
97 @Test
98 public void testSimpleFriend() throws RepositoryException {
99 assertExtract("/microformats/xfn/simple-friend.html");
100 Resource bob = findExactlyOneBlankSubject(vXFN.mePage, baseIRI);
101 Resource alice = findExactlyOneBlankSubject(vXFN.mePage, alicesHomepage);
102 assertContains(bob, RDF.TYPE, vFOAF.Person);
103 assertContains(alice, RDF.TYPE, vFOAF.Person);
104 Assert.assertFalse(alice.equals(bob));
105 assertContains(bob, vXFN.friend, alice);
106 assertContains(baseIRI, vXFN.getExtendedProperty("friend"), alicesHomepage);
107 }
108
109 @Test
110 public void testFriendAndSweetheart() throws RepositoryException {
111 assertExtract("/microformats/xfn/multiple-rel.html");
112 Resource bob = findExactlyOneBlankSubject(vXFN.mePage, baseIRI);
113 Resource alice = findExactlyOneBlankSubject(vXFN.mePage, alicesHomepage);
114 assertContains(bob, vXFN.friend, alice);
115 assertContains(baseIRI, vXFN.getExtendedProperty("friend"), alicesHomepage);
116
117 assertContains(bob, vXFN.sweetheart, alice);
118 assertContains(baseIRI, vXFN.getExtendedProperty("sweetheart"), alicesHomepage);
119 }
120
121 @Test
122 public void testMultipleFriends() throws RepositoryException {
123 assertExtract("/microformats/xfn/multiple-friends.html");
124 Resource bob = findExactlyOneBlankSubject(vXFN.mePage, baseIRI);
125 Resource alice = findExactlyOneBlankSubject(vXFN.mePage, alicesHomepage);
126 Resource charlie = findExactlyOneBlankSubject(vXFN.mePage, charliesHomepage);
127 assertContains(bob, vXFN.friend, alice);
128 assertContains(baseIRI, vXFN.getExtendedProperty("friend"), alicesHomepage);
129
130 assertContains(bob, vXFN.friend, charlie);
131 assertContains(baseIRI, vXFN.getExtendedProperty("friend"), charliesHomepage);
132 }
133
134 @Test
135 public void testSomeLinksWithoutRel() throws RepositoryException {
136 assertExtract("/microformats/xfn/some-links-without-rel.html");
137 assertNotContains(null, null, alicesHomepage);
138 assertContains(null, null, charliesHomepage);
139 }
140
141 @Test
142 public void testForSomeReasonICantBeMyOwnSweetheart() throws RepositoryException {
143 assertExtract("/microformats/xfn/me-and-sweetheart.html");
144 assertModelEmpty();
145 }
146
147 @Test
148 public void testIgnoreExtraSpacesInRel() throws RepositoryException {
149 assertExtract("/microformats/xfn/strip-spaces.html");
150 assertContains(null, vXFN.mePage, baseIRI);
151 }
152
153 @Test
154 public void testMixedCaseATag() throws RepositoryException {
155 assertExtract("/microformats/xfn/mixed-case.html");
156 assertContains(null, vXFN.mePage, baseIRI);
157 }
158
159 @Test
160 public void testUpcaseHREF() throws RepositoryException {
161 assertExtract("/microformats/xfn/upcase-href.html");
162 assertContains(null, vXFN.mePage, baseIRI);
163 }
164 }