MetaDataTest.java revision 6a7bdc7a1b1fbe38142995bde5f05023b8ab86ad
1package org.robolectric.manifest;
2
3import android.content.res.Resources;
4import com.google.common.collect.ImmutableList;
5import org.junit.Before;
6import org.junit.Test;
7import org.junit.runner.RunWith;
8import org.junit.runners.JUnit4;
9import org.mockito.Mock;
10import org.mockito.MockitoAnnotations;
11import org.robolectric.res.ResourceIndex;
12import org.robolectric.res.ResourceProvider;
13import org.w3c.dom.Element;
14import org.w3c.dom.Node;
15
16import javax.xml.parsers.DocumentBuilder;
17import javax.xml.parsers.DocumentBuilderFactory;
18import javax.xml.parsers.ParserConfigurationException;
19
20import static org.mockito.Mockito.when;
21
22/**
23 * Tests for {@link MetaData}
24 */
25@RunWith(JUnit4.class)
26public class MetaDataTest {
27
28  @Mock
29  ResourceProvider resourceProvider;
30  @Mock ResourceIndex resourceIndex;
31
32  @Before
33  public void setUp() {
34    MockitoAnnotations.initMocks(this);
35  }
36
37  @Test(expected = Resources.NotFoundException.class)
38  public void testNonExistantResource_throwsResourceNotFoundException() {
39    when(resourceProvider.getResourceIndex()).thenReturn(resourceIndex);
40    Element metaDataElement = createMetaDataNode("aName", "@xml/non_existant_resource");
41
42    MetaData metaData = new MetaData(ImmutableList.<Node>of(metaDataElement));
43    metaData.init(resourceProvider, "a.package");
44  }
45
46  private static Element createMetaDataNode(String name, String value) {
47    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
48    Element metaDataElement;
49    try {
50      DocumentBuilder db = dbf.newDocumentBuilder();
51      metaDataElement = db.newDocument().createElement("meta-data");
52      metaDataElement.setAttribute("android:name", name);
53      metaDataElement.setAttribute("android:value", value);
54    } catch (ParserConfigurationException e) {
55      throw new RuntimeException(e);
56    }
57    return metaDataElement;
58  }
59}
60