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