/*
* Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.yangtools.yang.model.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import java.net.URI;
import java.net.URISyntaxException;
import java.text.ParseException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.junit.BeforeClass;
import org.junit.Test;
import org.opendaylight.yangtools.concepts.SemVer;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.ModuleImport;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.util.FilteringSchemaContextProxy.ModuleId;
public class SchemaContextProxyTest {
private static URI namespace;
private static Date revision;
private static Date revision2;
private static final String CONFIG_NAME = "config";
private static final String ROOT_NAME = "root";
private static final String MODULE2_NAME = "module2";
private static final String MODULE3_NAME = "module3";
private static final String MODULE4_NAME = "module4";
private static final String MODULE41_NAME = "module41";
private static final String MODULE5_NAME = "module5";
private static final String TEST_SOURCE = "test source";
@BeforeClass
public static void setUp() throws ParseException, URISyntaxException {
namespace = new URI("urn:opendaylight:params:xml:ns:yang:controller:config");
revision = SimpleDateFormatUtil.getRevisionFormat().parse("2015-01-01");
revision2 = SimpleDateFormatUtil.getRevisionFormat().parse("2015-01-15");
}
private static SchemaContext mockSchema(final Module... module) {
SchemaContext mock = mock(SchemaContext.class);
doReturn(Sets.newHashSet(module)).when(mock).getModules();
return mock;
}
/**
* <pre>
* CFG(R)
* | \
* | \
* M2 <- M3
* </pre>
*/
@Test
public void testBasic() {
Module moduleConfig = mockModule(CONFIG_NAME);
Module module2 = mockModule(MODULE2_NAME);
Module module3 = mockModule(MODULE3_NAME);
mockModuleImport(module2, moduleConfig);
mockModuleImport(module3, module2, moduleConfig);
SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, moduleConfig);
assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3);
}
/**
* <pre>
* No root or additional modules
* | \
* | \
* M2 <- M3
* </pre>
*/
@Test
public void testNull() {
Module moduleConfig = mockModule(CONFIG_NAME);
Module module2 = mockModule(MODULE2_NAME);
Module module3 = mockModule(MODULE3_NAME);
mockModuleImport(module2, moduleConfig);
mockModuleImport(module3, module2, moduleConfig);
SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, null);
assertProxyContext(filteringSchemaContextProxy, null);
}
/**
* <pre>
* Config
* | \ (NR)
* | \
* M2 <- M3
* </pre>
*/
@Test
public void testConfigDifferentRevisions() {
Module moduleConfigNullRevision = mockModule(CONFIG_NAME, null);
Module moduleConfig = mockModule(CONFIG_NAME, revision);
Module moduleConfig2 = mockModule(CONFIG_NAME, revision2);
Module module2 = mockModule(MODULE2_NAME);
Module module3 = mockModule(MODULE3_NAME);
mockModuleImport(module2, moduleConfig);
mockModuleImport(module3, module2, moduleConfigNullRevision);
SchemaContext schemaContext = mockSchema(moduleConfig, moduleConfig2, module2, module3);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, moduleConfig);
assertProxyContext(filteringSchemaContextProxy, moduleConfig, moduleConfig2, module2, module3);
}
/**
* <pre>
* CFG(R)
* | \
* | \
* M2<-(NullRev)M3
* </pre>
*/
@Test
public void testBasicNullRevision() throws Exception {
Module moduleConfig = mockModule(CONFIG_NAME,SimpleDateFormatUtil.getRevisionFormat().parse("2013-04-05"));
Module module2 = mockModule(MODULE2_NAME, SimpleDateFormatUtil.getRevisionFormat().parse("2014-06-17"));
Module module20 = mockModule(MODULE2_NAME, null);
Module module3 = mockModule(MODULE3_NAME, SimpleDateFormatUtil.getRevisionFormat().parse("2014-06-12"));
Module module30 = mockModule(MODULE3_NAME, null);
mockModuleImport(module20, moduleConfig);
mockModuleImport(module2, moduleConfig);
mockModuleImport(module3, module20, moduleConfig);
mockModuleImport(module30, module20, moduleConfig);
SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, moduleConfig);
assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3);
}
/**
* <pre>
* CFG(R) ROOT(R)
* | \
* | \
* M2 M3
* </pre>
*/
@Test
public void testBasicMoreRootModules() {
Module moduleConfig = mockModule(CONFIG_NAME);
Module moduleRoot = mockModule(ROOT_NAME);
Module module2 = mockModule(MODULE2_NAME);
Module module3 = mockModule(MODULE3_NAME);
mockModuleImport(module2, moduleConfig);
mockModuleImport(module3, moduleRoot);
SchemaContext schemaContext = mockSchema(moduleConfig, moduleRoot, module2, module3);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, moduleRoot, moduleConfig);
assertProxyContext(filteringSchemaContextProxy, moduleRoot, module3, moduleConfig, module2);
}
/**
* <pre>
* CFG(R)
* |
* |
* M2 <- M3
* </pre>
*/
@Test
public void testChainNotDepend() {
Module moduleConfig = mockModule(CONFIG_NAME);
Module module2 = mockModule(MODULE2_NAME);
Module module3 = mockModule(MODULE3_NAME);
mockModuleImport(module2, moduleConfig);
mockModuleImport(module3, module2);
SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, moduleConfig);
assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2);
}
/**
* <pre>
* CFG(R)
* |
* |
* M2 -> M3 -> M4 -> M5
* </pre>
*/
@Test
public void testChainDependMulti() {
Module moduleConfig = mockModule(CONFIG_NAME);
Module module2 = mockModule(MODULE2_NAME);
Module module3 = mockModule(MODULE3_NAME);
Module module4 = mockModule(MODULE4_NAME);
Module module5 = mockModule(MODULE5_NAME);
mockModuleImport(module2, moduleConfig, module3);
mockModuleImport(module3, module4);
mockModuleImport(module4, module5);
SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3, module4, module5);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, moduleConfig);
assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3, module4, module5);
}
/**
* <pre>
* CFG(R)
* |
* |
* M2 -> M3 <- M4
* </pre>
*/
@Test
public void testChainNotDependMulti() {
Module moduleConfig = mockModule(CONFIG_NAME);
Module module2 = mockModule(MODULE2_NAME);
Module module3 = mockModule(MODULE3_NAME);
Module module4 = mockModule(MODULE4_NAME);
mockModuleImport(module2, moduleConfig, module3);
mockModuleImport(module4, module3);
SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3, module4);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, moduleConfig);
assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3);
}
/**
* <pre>
* CFG(R)
* | \ \ \
* | \ \ \
* M2 M3 M4 M5
* </pre>
*/
@Test
public void testChainNotMulti() {
Module moduleConfig = mockModule(CONFIG_NAME);
Module module2 = mockModule(MODULE2_NAME);
Module module3 = mockModule(MODULE3_NAME);
Module module4 = mockModule(MODULE4_NAME);
Module module5 = mockModule(MODULE5_NAME);
mockModuleImport(module2, moduleConfig);
mockModuleImport(module3, moduleConfig);
mockModuleImport(module4, moduleConfig);
mockModuleImport(module5, moduleConfig);
SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3, module4, module5);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, moduleConfig);
assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3, module4, module5);
}
/**
* <pre>
* CFG(R)
* | \
* | \
* M2 <- M3 M4=M3(Different revision)
* </pre>
*/
@Test
public void testBasicRevisionChange() throws Exception {
Module moduleConfig = mockModule(CONFIG_NAME);
Module module2 = mockModule(MODULE2_NAME);
Module module3 = mockModule(MODULE3_NAME);
Date dat = SimpleDateFormatUtil.getRevisionFormat().parse("2015-10-10");
Module module4 = mockModule(MODULE3_NAME, dat);
mockModuleImport(module2, moduleConfig);
mockModuleImport(module3, module2, moduleConfig);
SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3, module4);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, moduleConfig);
assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3);
}
/**
* <pre>
* CFG(R)
* |
* M2 -(no revision)-> M3(R2) ... M3(R1)
* </pre>
*/
@Test
public void testImportNoRevision() {
Module moduleConfig = mockModule(CONFIG_NAME, revision);
Module module2 = mockModule(MODULE2_NAME, revision);
Module module3 = mockModule(MODULE3_NAME, null);
Module module30 = mockModule(MODULE3_NAME, revision);
Module module31 = mockModule(MODULE3_NAME, revision2);
mockModuleImport(module2, moduleConfig, module3);
SchemaContext schemaContext = mockSchema(moduleConfig, module2, module30, module31);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, moduleConfig);
assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module31);
}
/**
* <pre>
* CFG(R)
* | \
* | \
* | M2 -> M3
* |
* M41(S) => M4
* </pre>
*/
@Test
public void testBasicSubmodule() {
Module moduleConfig = mockModule(CONFIG_NAME);
Module module2 = mockModule(MODULE2_NAME);
Module module3 = mockModule(MODULE3_NAME);
Module module4 = mockModule(MODULE4_NAME);
Module module41 = mockModule(MODULE41_NAME);
mockSubmodules(module4, module41);
mockModuleImport(module2, moduleConfig, module3);
mockModuleImport(module41, moduleConfig);
SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3, module4);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, moduleConfig);
assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3, module4);
}
/**
* <pre>
*
* M2 -> M3 -> M4 -> M5
*
* </pre>
*/
@Test
public void testChainAdditionalModules() {
Module module2 = mockModule(MODULE2_NAME);
Module module3 = mockModule(MODULE3_NAME);
Module module4 = mockModule(MODULE4_NAME);
Module module5 = mockModule(MODULE5_NAME);
mockModuleImport(module2, module3);
mockModuleImport(module3, module4);
mockModuleImport(module4, module5);
SchemaContext schemaContext = mockSchema(module2, module3, module4, module5);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, Sets.newHashSet(module2), null);
assertProxyContext(filteringSchemaContextProxy, module2, module3, module4, module5);
}
/**
* <pre>
*
* CFG(R)
* |
* | M5
* M2
*
* M3 -> M4
*
* </pre>
*/
@Test
public void testChainAdditionalModulesConfig() {
Module moduleConfig = mockModule(CONFIG_NAME);
Module module2 = mockModule(MODULE2_NAME);
Module module3 = mockModule(MODULE3_NAME);
Module module4 = mockModule(MODULE4_NAME);
Module module5 = mockModule(MODULE5_NAME);
mockModuleImport(module2, moduleConfig);
mockModuleImport(module3, module4);
SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3, module4, module5);
FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, Sets.newHashSet(module3), moduleConfig);
assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3, module4);
}
@Test
public void testGetDataDefinitions() {
final Module moduleConfig = mockModule(CONFIG_NAME);
final SchemaContext schemaContext = mockSchema(moduleConfig);
final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
Sets.newHashSet(), moduleConfig);
final ContainerSchemaNode mockedContainer = mock(ContainerSchemaNode.class);
final Set<DataSchemaNode> childNodes = Sets.newHashSet(mockedContainer);
doReturn(childNodes).when(moduleConfig).getChildNodes();
final Set<DataSchemaNode> dataDefinitions = filteringSchemaContextProxy.getDataDefinitions();
assertTrue(dataDefinitions.contains(mockedContainer));
}
@Test
public void testGetNotifications() {
final Module moduleConfig = mockModule(CONFIG_NAME);
final SchemaContext schemaContext = mockSchema(moduleConfig);
final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
Sets.newHashSet(), moduleConfig);
final NotificationDefinition mockedNotification = mock(NotificationDefinition.class);
final Set<NotificationDefinition> notifications = Sets.newHashSet(mockedNotification);
doReturn(notifications).when(moduleConfig).getNotifications();
final Set<NotificationDefinition> schemaContextProxyNotifications = filteringSchemaContextProxy.getNotifications();
assertTrue(schemaContextProxyNotifications.contains(mockedNotification));
}
@Test
public void testGetOperations() {
final Module moduleConfig = mockModule(CONFIG_NAME);
final SchemaContext schemaContext = mockSchema(moduleConfig);
final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
Sets.newHashSet(), moduleConfig);
final RpcDefinition mockedRpc = mock(RpcDefinition.class);
final Set<RpcDefinition> rpcs = Sets.newHashSet(mockedRpc);
doReturn(rpcs).when(moduleConfig).getRpcs();
final Set<RpcDefinition> operations = filteringSchemaContextProxy.getOperations();
assertTrue(operations.contains(mockedRpc));
}
@Test
public void testGetExtensions() {
final Module moduleConfig = mockModule(CONFIG_NAME);
final SchemaContext schemaContext = mockSchema(moduleConfig);
final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
Sets.newHashSet(), moduleConfig);
final ExtensionDefinition mockedExtension = mock(ExtensionDefinition.class);
final List<ExtensionDefinition> extensions = Lists.newArrayList(mockedExtension);
doReturn(extensions).when(moduleConfig).getExtensionSchemaNodes();
final Set<ExtensionDefinition> schemaContextProxyExtensions = filteringSchemaContextProxy.getExtensions();
assertTrue(schemaContextProxyExtensions.contains(mockedExtension));
}
@Test
public void testGetUnknownSchemaNodes() {
final Module moduleConfig = mockModule(CONFIG_NAME);
final SchemaContext schemaContext = mockSchema(moduleConfig);
final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
Sets.newHashSet(), moduleConfig);
final UnknownSchemaNode mockedUnknownSchemaNode = mock(UnknownSchemaNode.class);
final List<UnknownSchemaNode> unknownSchemaNodes = Lists.newArrayList(mockedUnknownSchemaNode);
doReturn(unknownSchemaNodes).when(moduleConfig).getUnknownSchemaNodes();
final List<UnknownSchemaNode> schemaContextProxyUnknownSchemaNodes =
filteringSchemaContextProxy.getUnknownSchemaNodes();
assertTrue(schemaContextProxyUnknownSchemaNodes.contains(mockedUnknownSchemaNode));
}
@Test
public void testGetTypeDefinitions() {
final Module moduleConfig = mockModule(CONFIG_NAME);
final SchemaContext schemaContext = mockSchema(moduleConfig);
final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
Sets.newHashSet(), moduleConfig);
final TypeDefinition<?> mockedTypeDefinition = mock(TypeDefinition.class);
final Set<TypeDefinition<?>> typeDefinitions = Sets.newHashSet(mockedTypeDefinition);
doReturn(typeDefinitions).when(moduleConfig).getTypeDefinitions();
final Set<TypeDefinition<?>> schemaContextProxyTypeDefinitions = filteringSchemaContextProxy.getTypeDefinitions();
assertTrue(schemaContextProxyTypeDefinitions.contains(mockedTypeDefinition));
}
@Test
public void testGetChildNodes() {
final Module moduleConfig = mockModule(CONFIG_NAME);
final SchemaContext schemaContext = mockSchema(moduleConfig);
final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
Sets.newHashSet(), moduleConfig);
final ContainerSchemaNode mockedContainer = mock(ContainerSchemaNode.class);
final Set<DataSchemaNode> childNodes = Sets.newHashSet(mockedContainer);
doReturn(childNodes).when(moduleConfig).getChildNodes();
final Set<DataSchemaNode> schemaContextProxyChildNodes = filteringSchemaContextProxy.getChildNodes();
assertTrue(schemaContextProxyChildNodes.contains(mockedContainer));
}
@Test
public void testGetGroupings() {
final Module moduleConfig = mockModule(CONFIG_NAME);
final SchemaContext schemaContext = mockSchema(moduleConfig);
final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
Sets.newHashSet(), moduleConfig);
final GroupingDefinition mockedGrouping = mock(GroupingDefinition.class);
final Set<GroupingDefinition> groupings = Sets.newHashSet(mockedGrouping);
doReturn(groupings).when(moduleConfig).getGroupings();
final Set<GroupingDefinition> schemaContextProxyGroupings = filteringSchemaContextProxy.getGroupings();
assertTrue(schemaContextProxyGroupings.contains(mockedGrouping));
}
@Test
public void testGetDataChildByName() {
final Module moduleConfig = mockModule(CONFIG_NAME);
final SchemaContext schemaContext = mockSchema(moduleConfig);
final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
Sets.newHashSet(), moduleConfig);
final QName qName = QName.create("config-namespace", "2016-08-11", "cont");
final ContainerSchemaNode mockedContainer = mock(ContainerSchemaNode.class);
doReturn(mockedContainer).when(moduleConfig).getDataChildByName(any(QName.class));
final DataSchemaNode dataSchemaNode = filteringSchemaContextProxy.getDataChildByName(qName);
assertTrue(dataSchemaNode instanceof ContainerSchemaNode);
}
private static void assertProxyContext(final FilteringSchemaContextProxy filteringSchemaContextProxy, final Module... expected) {
Set<Module> modSet = Sets.newHashSet();
if (expected!=null) {
modSet = Sets.newHashSet(expected);
}
Set<Module> modSetFiltering = filteringSchemaContextProxy.getModules();
assertEquals(modSet, modSetFiltering);
//asserting collections
if (expected!=null) {
for (final Module module : expected) {
assertEquals(module, filteringSchemaContextProxy.findModuleByName(module.getName(), module.getRevision()));
Set<Module> mod = filteringSchemaContextProxy.findModuleByNamespace(module.getNamespace());
assertTrue(mod.contains(module));
assertEquals(module, filteringSchemaContextProxy.findModuleByNamespaceAndRevision(module.getNamespace(), module.getRevision()));
assertEquals(module.getSource(), filteringSchemaContextProxy.getModuleSource(module).get());
}
}
}
private static FilteringSchemaContextProxy createProxySchemaCtx(final SchemaContext schemaContext,
final Set<Module> additionalModules, final Module... modules) {
Set<Module> modulesSet = new HashSet<>();
if (modules!=null) {
modulesSet = Sets.newHashSet(modules);
}
return new FilteringSchemaContextProxy(schemaContext, createModuleIds(modulesSet) , createModuleIds(additionalModules));
}
private static Set<ModuleId> createModuleIds(final Set<Module> modules) {
Set<ModuleId> moduleIds = Sets.newHashSet();
if (modules!=null && modules.size()>0) {
for (Module module : modules) {
moduleIds.add(new ModuleId(module.getName(), module.getRevision()));
}
}
return moduleIds;
}
private static void mockSubmodules(final Module mainModule, final Module... submodules) {
Set<Module> submodulesSet = new HashSet<>();
submodulesSet.addAll(Arrays.asList(submodules));
doReturn(submodulesSet).when(mainModule).getSubmodules();
}
private static void mockModuleImport(final Module importer, final Module... imports) {
Set<ModuleImport> mockedImports = Sets.newHashSet();
for (final Module module : imports) {
mockedImports.add(new ModuleImport() {
@Override
public String getModuleName() {
return module.getName();
}
@Override
public Date getRevision() {
return module.getRevision();
}
@Override
public String getPrefix() {
return module.getName();
}
@Override
public SemVer getSemanticVersion() {
return module.getSemanticVersion();
}
@Override
public String toString() {
return String.format("Module: %s, revision:%s", module.getName(), module.getRevision());
}
});
}
doReturn(mockedImports).when(importer).getImports();
}
//mock module with revision
private static Module mockModule(final String name, final Date rev) {
final Module mod = mockModule(name);
doReturn(QNameModule.create(mod.getNamespace(), rev)).when(mod).getQNameModule();
doReturn(rev).when(mod).getRevision();
doReturn(mod.getQNameModule().toString()).when(mod).toString();
return mod;
}
//mock module with default revision
private static Module mockModule(final String mName) {
Module mockedModule = mock(Module.class);
doReturn(mName).when(mockedModule).getName();
doReturn(revision).when(mockedModule).getRevision();
final URI newNamespace = URI.create(namespace.toString() + ":" + mName);
doReturn(newNamespace).when(mockedModule).getNamespace();
doReturn(QNameModule.create(newNamespace, revision)).when(mockedModule).getQNameModule();
doReturn(TEST_SOURCE).when(mockedModule).getSource();
doReturn(Sets.newHashSet()).when(mockedModule).getSubmodules();
doReturn(mockedModule.getQNameModule().toString()).when(mockedModule).toString();
mockModuleImport(mockedModule);
return mockedModule;
}
}