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