1   package com.atlassian.bonnie.search.extractor;
2   
3   import junit.framework.TestCase;
4   
5   import org.apache.lucene.document.Document;
6   
7   import com.atlassian.bonnie.Searchable;
8   import com.atlassian.bonnie.search.MockSearchableAttachment;
9   import com.atlassian.bonnie.search.MockSearchableObject;
10  
11  public class TestAttachmentMetadataExtractor extends TestCase
12  {
13      public void testNonAttachment()
14      {
15          Searchable searchable = new MockSearchableObject();
16          Document document = makeDocument(searchable);
17          assertNull(document.getField("filename"));
18          assertNull(document.getField("comment"));
19      }
20  
21      public void testAttachment()
22      {
23          MockSearchableAttachment attachment = new MockSearchableAttachment();
24          attachment.setId(123);
25          attachment.setFileName("cheese.txt");
26          attachment.setContentType("text/fish");
27          attachment.setComment("This is all about cheese");
28          Document document = makeDocument(attachment);
29          assertEquals("cheese.txt", document.getField("filename").stringValue());
30          assertEquals("This is all about cheese", document.getField("comment").stringValue());
31      }
32  
33      /*
34       * CONF-8783/BONNIE-11. Ensure attachment comments are separated from the rest of the searchable text
35       * when extracted. 
36       */
37      public void testAttachmentComment()
38      {
39      	final String comment = "trousers";
40      	final String attachmentContent = "monkey";
41      	
42          MockSearchableAttachment attachment = new MockSearchableAttachment();
43          attachment.setId(123);
44          attachment.setFileName("fun.txt");
45          attachment.setContentType("text/plain");
46          attachment.setComment(comment);
47          
48          // 'run' the extractor
49          Document document = new Document();
50          StringBuffer defaultSearchableText = new StringBuffer(attachmentContent); 
51  
52          new AttachmentMetadataExtractor().addFields(document, defaultSearchableText, attachment);
53          
54          assertEquals(attachmentContent + " " + comment, defaultSearchableText.toString());
55      }
56      
57      private Document makeDocument(Searchable searchable)
58      {
59          Document document = new Document();
60          new AttachmentMetadataExtractor().addFields(document, new StringBuffer(), searchable);
61          return document;
62      }
63  }