test_neurotransmitter.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. import unittest
  2. from mock import mock
  3. from kalliope.core.NeuronModule import NeuronModule, MissingParameterException, InvalidParameterException
  4. from kalliope.neurons.neurotransmitter import Neurotransmitter
  5. class TestNeurotransmitter(unittest.TestCase):
  6. def setUp(self):
  7. self.from_answer_link = [
  8. {
  9. "synapse": "synapse2",
  10. "answers": [
  11. "answer one"
  12. ]
  13. },
  14. {
  15. "synapse": "synapse3",
  16. "answers": [
  17. "answer two",
  18. "answer three"
  19. ]
  20. },
  21. ]
  22. self.direct_link = "direct_link"
  23. self.default = "default"
  24. def testParameters(self):
  25. """
  26. Testing the Parameters checking
  27. """
  28. def run_test_InvalidParameterException(parameters_to_test):
  29. with self.assertRaises(InvalidParameterException):
  30. Neurotransmitter(**parameters_to_test)
  31. def run_test_MissingParameterException(parameters_to_test):
  32. with self.assertRaises(MissingParameterException):
  33. Neurotransmitter(**parameters_to_test)
  34. # empty
  35. parameters = dict()
  36. run_test_MissingParameterException(parameters)
  37. # missing direct_link and from_answer_link
  38. parameters = {
  39. "default": self.default
  40. }
  41. run_test_MissingParameterException(parameters)
  42. # missing direct_link and from_answer_link
  43. parameters = {
  44. "default": self.default,
  45. "from_answer_link": self.from_answer_link,
  46. "direct_link": self.direct_link
  47. }
  48. run_test_InvalidParameterException(parameters)
  49. # missing default
  50. parameters = {
  51. "from_answer_link": self.from_answer_link,
  52. "direct_link": self.direct_link
  53. }
  54. run_test_InvalidParameterException(parameters)
  55. # Missing answer in from_answer_link
  56. self.from_answer_link = [
  57. {
  58. "synapse": "synapse2",
  59. }
  60. ]
  61. parameters = {
  62. "default": self.default,
  63. "from_answer_link": self.from_answer_link
  64. }
  65. run_test_MissingParameterException(parameters)
  66. # Missing synapse in from_answer_link
  67. self.from_answer_link = [
  68. {
  69. "answer": "blablablbla",
  70. }
  71. ]
  72. parameters = {
  73. "default": self.default,
  74. "from_answer_link": self.from_answer_link
  75. }
  76. run_test_MissingParameterException(parameters)
  77. def testCallback(self):
  78. """
  79. Testing the callback provided when audio has been provided by the User as an answer.
  80. """
  81. parameters = {
  82. "default": self.default,
  83. "from_answer_link": self.from_answer_link
  84. }
  85. with mock.patch.object(NeuronModule, 'get_audio_from_stt', create=True) as mock_get_audio_from_stt:
  86. with mock.patch.object(NeuronModule, 'run_synapse_by_name', create=True) as mock_run_synapse_by_name:
  87. # testing running the default when no order matching
  88. nt = Neurotransmitter(**parameters)
  89. mock_get_audio_from_stt.assert_called_once()
  90. mock_get_audio_from_stt.reset_mock()
  91. # testing running the default when audio None
  92. audio_text = None
  93. nt.callback(audio=audio_text)
  94. mock_run_synapse_by_name.assert_called_once_with(self.default)
  95. mock_run_synapse_by_name.reset_mock()
  96. # testing running the default when no order matching
  97. audio_text = "try test audio "
  98. nt.callback(audio=audio_text)
  99. mock_run_synapse_by_name.assert_called_once_with(self.default)
  100. mock_run_synapse_by_name.reset_mock()
  101. with mock.patch.object(NeuronModule,
  102. 'run_synapse_by_name_with_order',
  103. create=True) as mock_run_synapse_by_name_with_order:
  104. audio_text="answer one"
  105. nt.callback(audio=audio_text)
  106. mock_run_synapse_by_name_with_order.assert_called_once_with(order=audio_text,
  107. synapse_name="synapse2",
  108. order_template="answer one")
  109. def testInit(self):
  110. """
  111. Testing the init method of the neurontransmitter.
  112. """
  113. with mock.patch.object(NeuronModule, 'run_synapse_by_name', create=True) as mock_run_synapse_by_name:
  114. # Test direct link
  115. parameters = {
  116. "default": self.default,
  117. "direct_link": self.direct_link
  118. }
  119. nt = Neurotransmitter(**parameters)
  120. mock_run_synapse_by_name.assert_called_once_with(self.direct_link)
  121. with mock.patch.object(NeuronModule, 'get_audio_from_stt', create=True) as mock_get_audio_from_stt:
  122. # Test get_audio_from_stt
  123. parameters = {
  124. "default": self.default,
  125. "from_answer_link": self.from_answer_link,
  126. }
  127. nt = Neurotransmitter(**parameters)
  128. mock_get_audio_from_stt.assert_called_once()