Added two test files
[nemo.git] / nemo-impl / src / test / java / org / opendaylight / nemo / user / vnspacemanager / languagestyle / updateintentlang / UpdateTemplateInstanceLangTest.java
1 /*\r
2  * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang;\r
9 \r
10 import junit.framework.TestCase;\r
11 import org.junit.Assert;\r
12 import org.junit.Before;\r
13 import org.junit.Test;\r
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
15 import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
16 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
17 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateTemplateInstanceLang;\r
18 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateTemplateInstance;\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstance;\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstanceBuilder;\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstanceKey;\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameter;\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterBuilder;\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterKey;\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValuesBuilder;\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.*;\r
28 import org.slf4j.Logger;\r
29 import org.slf4j.LoggerFactory;\r
30 \r
31 import java.lang.reflect.Field;\r
32 import java.util.*;\r
33 import static org.junit.Assert.*;\r
34 import static org.mockito.Mockito.*;\r
35 /**\r
36  * Created by zhangmeng on 2015/12/29.\r
37  */\r
38 public class UpdateTemplateInstanceLangTest extends TestCase {\r
39     private DataBroker dataBroker;\r
40     private TenantManage tenantManage;\r
41     private UpdateTemplateInstanceLang updateTemplateInstanceLang;\r
42     @Before\r
43     public void setUp() throws Exception {\r
44         dataBroker = mock(DataBroker.class);\r
45         tenantManage = mock(TenantManage.class);\r
46 \r
47         updateTemplateInstanceLang = new UpdateTemplateInstanceLang(dataBroker,tenantManage);\r
48     }\r
49 \r
50     @Test\r
51     public void testTemplateInstanceLang() throws Exception {\r
52         Class<UpdateTemplateInstanceLang> class1 = UpdateTemplateInstanceLang.class;\r
53         Field field = class1.getDeclaredField("updateTemplateInstance");\r
54         field.setAccessible(true);\r
55 \r
56         UserId userId = mock(UserId.class);\r
57         String nodeName = new String("nodename");\r
58         String nodeType = new String("nodetype");\r
59         LinkedHashMap<String, LinkedHashMap<String,String>> propertyList = new LinkedHashMap<String, LinkedHashMap<String, String>>();\r
60         LinkedHashMap<String, String> values =  new LinkedHashMap<String, String>();\r
61         Map map = mock(Map.class);\r
62         UpdateTemplateInstance updateTemplateInstance = mock(UpdateTemplateInstance.class);\r
63         String parameterName = new String("parameterName");\r
64 \r
65         propertyList.put(parameterName, values);\r
66         values.put("string", NEMOConstants.string);\r
67         field.set(updateTemplateInstanceLang, updateTemplateInstance);\r
68 \r
69         when(tenantManage.getTemplateInstance(userId))\r
70                 .thenReturn(map)\r
71                 .thenReturn(map)\r
72                 .thenReturn(null);\r
73         when(tenantManage.getObjectId(userId, nodeName)).thenReturn("11111111-1111-1111-1111-111111111111");\r
74         when(map.containsKey(any(TemplateInstanceId.class)))\r
75                 .thenReturn(true)\r
76                 .thenReturn(false);\r
77         Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList).equals("The instance " + nodeName + " has exist."));\r
78         verify(tenantManage,times(2)).getTemplateInstance(userId);\r
79         Assert.assertTrue(propertyList.get(parameterName) == values);\r
80         when(updateTemplateInstance.checkTemplateInstance(any(UserId.class), any(TemplateInstance.class)))\r
81                 .thenReturn(null)\r
82                 .thenReturn("int")\r
83                 .thenReturn("range");\r
84         doNothing().when(tenantManage).setUserTemplateInstance(any(UserId.class), any(TemplateInstanceId.class), any(TemplateInstance.class));\r
85         Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList) == null);\r
86         values.clear();\r
87         values.put("11", NEMOConstants.integer);\r
88         Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList).equals("int"));\r
89         values.clear();\r
90         values.put("1,1", NEMOConstants.range);\r
91         Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList).equals("range"));\r
92         verify(updateTemplateInstance,times(3)).checkTemplateInstance(any(UserId.class), any(TemplateInstance.class));\r
93     }\r
94 }