Merge branch 'NLPCRAFT-278' of https://github.com/apache/incubator-nlpcraft into NLPCRAFT-278
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/functions/NCIdlFunctionsCompany.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/functions/NCIdlFunctionsCompany.scala
index 6ac6b0f..bb82d90 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/functions/NCIdlFunctionsCompany.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/functions/NCIdlFunctionsCompany.scala
@@ -30,8 +30,8 @@
 class NCIdlFunctionsCompany extends NCIdlFunctions {
     @Test
     def test(): Unit = {
-        val comp = new NCCompany {
-            override def getId: Long = -1 // TODO: No REST API data
+        test(new NCCompany {
+            override def getId: Long = -1 // TODO: No REST API data (comp_id() cannot be used)
             override def getName: String = "name"
             override def getWebsite: Optional[String] = Optional.of("website")
             override def getCountry: Optional[String] = Optional.of("country")
@@ -41,15 +41,37 @@
             override def getPostalCode: Optional[String] = Optional.of("code")
             override def getMetadata: util.Map[String, AnyRef] =
                 Map("k1" → "v1").map(p ⇒ p._1 → p._2.asInstanceOf[AnyRef]).asJava
-        }
+        })
 
+        test(new NCCompany {
+            override def getId: Long = -1 // TODO: No REST API data (comp_id() cannot be used)
+            override def getName: String = "name"
+            override def getWebsite: Optional[String] = Optional.empty()
+            override def getCountry: Optional[String] = Optional.empty()
+            override def getRegion: Optional[String] = Optional.empty()
+            override def getCity: Optional[String] = Optional.empty()
+            override def getAddress: Optional[String] = Optional.empty()
+            override def getPostalCode: Optional[String] = Optional.empty()
+            override def getMetadata: util.Map[String, AnyRef] =
+                Map("k1" → "v1").map(p ⇒ p._1 → p._2.asInstanceOf[AnyRef]).asJava
+        })
+
+    }
+
+    private def test(comp: NCCompany): Unit = {
         val idlCtx = ctx(comp = comp)
 
+        def mkTestDesc(truth: String): TestDesc = TestDesc(truth = truth, idlCtx = idlCtx)
+        def get(opt: Optional[String]): String = if (opt.isEmpty) null else opt.get()
+
         test(
-            TestDesc(
-                truth = s"comp_name() == '${comp.getName}'",
-                idlCtx = idlCtx
-            )
+            mkTestDesc(s"comp_name() == '${comp.getName}'"),
+            mkTestDesc(s"comp_website() == '${get(comp.getWebsite)}'"),
+            mkTestDesc(s"comp_country() == '${get(comp.getCity)}'"),
+            mkTestDesc(s"comp_region() == '${get(comp.getRegion)}'"),
+            mkTestDesc(s"comp_city() == '${get(comp.getCity)}'"),
+            mkTestDesc(s"comp_addr() == '${get(comp.getAddress)}'"),
+            mkTestDesc(s"comp_postcode() == '${get(comp.getPostalCode)}'")
         )
     }
 }
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/functions/NCIdlFunctionsUser.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/functions/NCIdlFunctionsUser.scala
index 1e2c11d..08cee47 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/functions/NCIdlFunctionsUser.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/idl/compiler/functions/NCIdlFunctionsUser.scala
@@ -30,25 +30,45 @@
 class NCIdlFunctionsUser extends NCIdlFunctions {
     @Test
     def test(): Unit = {
-        val usr = new NCUser {
-            override def getId: Long = -1  // TODO: No REST API data
-            override def getFirstName: Optional[String] = Optional.of("firstName")
-            override def getLastName: Optional[String] = Optional.of("lastName")
-            override def getEmail: Optional[String] = Optional.of("email")
-            override def getAvatarUrl: Optional[String] = Optional.of("avatar")
-            override def isAdmin: Boolean = true
-            override def getSignupTimestamp: Long = -1 // TODO: No REST API data
-            override def getMetadata: util.Map[String, AnyRef] =
-                Map("k1" → "v1").map(p ⇒ p._1 → p._2.asInstanceOf[AnyRef]).asJava
-        }
+        test(
+            new NCUser {
+                override def getId: Long = -1  // TODO: No REST API data (user_id() cannot be used)
+                override def getFirstName: Optional[String] = Optional.of("firstName")
+                override def getLastName: Optional[String] = Optional.of("lastName")
+                override def getEmail: Optional[String] = Optional.of("email")
+                override def getAvatarUrl: Optional[String] = Optional.of("avatar")
+                override def isAdmin: Boolean = true
+                override def getSignupTimestamp: Long = -1 // TODO: No REST API data (user_signup_tstamp() cannot be used)
+                override def getMetadata: util.Map[String, AnyRef] =
+                    Map("k1" → "v1").map(p ⇒ p._1 → p._2.asInstanceOf[AnyRef]).asJava
+            }
+        )
+        test(
+            new NCUser {
+                override def getId: Long = -1  // TODO: No REST API data (user_id() cannot be used)
+                override def getFirstName: Optional[String] = Optional.empty()
+                override def getLastName: Optional[String] = Optional.empty
+                override def getEmail: Optional[String] = Optional.empty
+                override def getAvatarUrl: Optional[String] = Optional.empty
+                override def isAdmin: Boolean = false
+                override def getSignupTimestamp: Long = -1 // TODO: No REST API data (user_signup_tstamp() cannot be used)
+                override def getMetadata: util.Map[String, AnyRef] =
+                    Map("k1" → "v1").map(p ⇒ p._1 → p._2.asInstanceOf[AnyRef]).asJava
+            }
+        )
+    }
 
+    private def test(usr: NCUser): Unit = {
         val idlCtx = ctx(usr = usr)
 
+        def mkTestDesc(truth: String): TestDesc = TestDesc(truth = truth, idlCtx = idlCtx)
+        def get(opt: Optional[String]): String = if (opt.isEmpty) null else opt.get()
+
         test(
-            TestDesc(
-                truth = s"user_email() == '${usr.getEmail.get()}'",
-                idlCtx = idlCtx
-            )
+            mkTestDesc(s"user_fname() == '${get(usr.getFirstName)}'"),
+            mkTestDesc(s"user_lname() == '${get(usr.getLastName)}'"),
+            mkTestDesc(s"user_email() == '${get(usr.getEmail)}'"),
+            mkTestDesc(s"user_admin() == '${usr.isAdmin}'")
         )
     }
 }