Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Workshop.activity/tests
diff options
context:
space:
mode:
Diffstat (limited to 'Workshop.activity/tests')
-rw-r--r--Workshop.activity/tests/MTTests.py169
-rw-r--r--Workshop.activity/tests/mocks.py134
-rw-r--r--Workshop.activity/tests/run-tests.py20
3 files changed, 323 insertions, 0 deletions
diff --git a/Workshop.activity/tests/MTTests.py b/Workshop.activity/tests/MTTests.py
new file mode 100644
index 0000000..0687d92
--- /dev/null
+++ b/Workshop.activity/tests/MTTests.py
@@ -0,0 +1,169 @@
+import mocks
+from WorkshopController import WorkshopController
+from WorkshopModel import Tutorial
+from Workshop import WorkshopView
+from unittest import TestCase
+import gtk
+
+
+class WsControllerTest(TestCase):
+ def setUp(self):
+ self.model = mocks.WorkshopModelMock()
+ self.view = mocks.ViewMock()
+ self.controller = WorkshopController(self.view,self.model)
+ self.tut = Tutorial({'name':'tut', 'description':'descrip','rating':4, 'author':'Max Power'})
+
+ def test_tutorial_query(self):
+ widget = 'This is the widget'
+ keyword = 'Test Keyword'
+ function_name = 'tutorial_query'
+ self.controller.tutorial_query(widget,keyword)
+
+ assert function_name in self.model.call_list, 'tutorial_query was not called'
+ assert self.model.call_list[function_name] == keyword, "the keyword %s wasn't correct" % (keyword)
+
+ def test_sort_selection_changed(self):
+ function_name = 'change_sorting'
+ widget = gtk.combo_box_new_text()
+ widget.insert_text(0,"Name")
+ widget.insert_text(1,"Rating")
+ widget.set_active(0)
+
+ self.controller.sort_selection_changed(widget,None)
+
+ assert function_name in self.view.call_list, 'change_sorting was not called'
+ assert self.view.call_list[function_name] == "Name", 'the parameter was not correct'
+
+ self.view.clear_call_list()
+
+ widget.set_active(1)
+ self.controller.sort_selection_changed(widget,None)
+
+ assert function_name in self.view.call_list, 'change_sorting was not called'
+ assert self.view.call_list[function_name] == "Rating", 'the parameter was not correct'
+
+ def test_launch_tutorial(self):
+ function_name = 'launch_tutorial'
+ self.controller.launch_tutorial(None,self.tut)
+
+ assert function_name in self.model.call_list, 'launch_tutorial was not called'
+ assert self.model.call_list[function_name] == self.tut, 'the parameter was not correct'
+
+ def test_show_details(self):
+ function_name = 'display_detail'
+ self.controller.show_details(None,self.tut)
+
+ assert function_name in self.view.call_list, 'display_detil was not called'
+ assert self.view.call_list[function_name] == self.tut , 'The parameter was not correct'
+
+ def test_back_pressed(self):
+ function_name = 'display_main_view'
+ self.controller.back_pressed(None,None)
+
+ assert function_name in self.view.call_list, 'display_main_view was not called'
+ assert self.view.call_list[function_name] == None, 'The parameter was not correct'
+
+ def test_rate_tutorial(self):
+ rating = 3
+ function_name = 'rate_tutorial'
+ self.controller.rate_tutorial(self.tut,rating)
+
+ assert function_name in self.model.call_list, 'rate_tutorial was not called'
+ assert self.model.call_list[function_name][0] == self.tut, 'The first param was not correct'
+ assert self.model.call_list[function_name][1] == rating, 'The second param was not correct'
+
+ def test_edit_tutorial(self,):
+ function_name = 'edit_tutorial'
+
+ self.controller.edit_tutorial(None,self.tut)
+
+ assert function_name in self.model.call_list, 'edit_tutorial was not called'
+ assert self.model.call_list[function_name] == self.tut, 'The parameter was not correct'
+
+
+ def test_info_tutorial(self):
+ function_name = 'display_info_dialog'
+
+ self.controller.info_tutorial(None,self.tut)
+
+ assert function_name in self.view.call_list, 'display_info_dialog was not called'
+ assert self.view.call_list[function_name] == self.tut, 'The parameter was not correct'
+
+
+
+ def test_save_tutorial_info(self):
+ function_name = 'save_metadata'
+
+ self.controller.save_tutorial_info(self.tut)
+
+ assert function_name in self.model.call_list, 'save_metadata was not called'
+ assert self.model.call_list[function_name] == self.tut, 'The parameter was not correct'
+
+
+ def test_delete_tutorial(self):
+ function_name = 'delete_tutorial'
+
+ self.controller.delete_tutorial(None,self.tut)
+
+ assert function_name in self.model.call_list, 'delete_tutorial was not called'
+ assert self.model.call_list[function_name] == self.tut, 'The parameter was not correct'
+
+ def test_publish_tutorial(self):
+ function_name = 'publish_tutorial'
+
+ self.controller.publish_tutorial(None,self.tut)
+
+ assert function_name in self.model.call_list, 'publish_tutorial was not called'
+ assert self.model.call_list[function_name] == self.tut, 'The parameter was not correct'
+
+ def test_unpublish_tutorial(self):
+ function_name = 'unpublish_tutorial'
+
+ self.controller.unpublish_tutorial(None,self.tut)
+
+ assert function_name in self.model.call_list, 'unpublish_tutorial was not called'
+ assert self.model.call_list[function_name] == self.tut, 'The parameter was not correct'
+
+
+class WsViewTest(TestCase):
+ def setUp(self):
+ self.workshop = WorkshopView()
+
+ def test_init(self):
+ assert self.workshop.mainView is not None, "main View not initialized"
+
+ def test_set_tutorial_list(self):
+ tut1 = Tutorial({'name':'btut1','description':'tutorial 1'})
+ tut2 = Tutorial({'name':'atut2','description':'tutorial 2'})
+ tut_list = [tut1,tut2]
+
+ assert self.workshop.mainView.list_container.get_children()
+
+ self.workshop.set_tutorial_list(tut_list)
+
+ assert self.workshop.mainView.tutorial_list == tut_list, 'The tutorial list not was processed correctly'
+
+ #tutorials are sorted by name so tut2 comes first
+ assert self.workshop.mainView.tutorial_list[0] == tut2
+ assert self.workshop.mainView.tutorial_list[1] == tut1
+
+ def test_change_sorting(self):
+ tut1 = Tutorial({'name':'btut1','description':'tutorial 1','rating':5})
+ tut2 = Tutorial({'name':'atut2','description':'tutorial 2','rating':1})
+ tut_list = [tut1,tut2]
+
+ self.workshop.set_tutorial_list(tut_list)
+
+ assert self.workshop.mainView.tutorial_list[0] == tut2
+ assert self.workshop.mainView.tutorial_list[1] == tut1
+
+ self.workshop.change_sorting('rating')
+
+ ##This test fails for the moment because rating are in reverse order
+ assert self.workshop.mainView.tutorial_list[0] == tut1, 'Not sorted by rating correctly'
+ assert self.workshop.mainView.tutorial_list[1] == tut2, 'Not sorted by rating correctly'
+
+
+
+
+ \ No newline at end of file
diff --git a/Workshop.activity/tests/mocks.py b/Workshop.activity/tests/mocks.py
new file mode 100644
index 0000000..d85d8f2
--- /dev/null
+++ b/Workshop.activity/tests/mocks.py
@@ -0,0 +1,134 @@
+import WorkshopModel
+import WorkshopController
+import Workshop
+
+class ViewMock():
+ """
+ Mock for the Workshop View
+
+ This mock contains a call list in which the name of the called function are added in the order they were called
+ """
+ def __init__(self):
+ self.__call_list ={}
+
+#method for handling the call list
+ def get_call_list(self):
+ return self.__call_list
+
+ def clear_call_list(self):
+ self.__call_list = {}
+
+ call_list = property(get_call_list)
+
+#method from the WorkshopView
+ def set_tutorial_list(self,tutorial_list):
+ self.__call_list.append('set_tutorial_list')
+
+ def change_sorting(self,sorting_key):
+ self.__call_list['change_sorting'] = sorting_key
+
+ def refresh_tutorial_info(self):
+ self.__call_list.append('refresh_tutorial_info')
+
+ def toggle_tutorial_publish(self,tutorial,published):
+ self.__call_list.append('toggle_tutorial_publish')
+
+ def display_detail(self,tutorial):
+ self.__call_list['display_detail'] = tutorial
+
+ def display_main_view(self):
+ self.__call_list['display_main_view'] = None
+
+ def display_info_dialog(self,tutorial):
+ self.__call_list['display_info_dialog'] = tutorial
+
+class WorkshopControllerMock(WorkshopController.WorkshopController):
+ def __init__(self):
+ self.__call_list =[]
+
+#method for handling the call list
+ def get_call_list(self):
+ return self.__call_list
+
+ def clear_call_list(self):
+ self.__call_list = []
+
+ call_list = property(get_call_list)
+
+#method from the WorkshopCOntroller
+ def tutorial_query(self,widget,keyword):
+ self.__call_list.append('tutorial_query')
+
+ def sort_selection_changed(self,widget,sort):
+ self.__call_list.append('sort_selection_changed')
+
+ def launch_tutorial_triggered(self,widget,tutorial):
+ self.__call_list.append('launch_tutorial_triggered')
+
+ def show_details(self,widget,tutorial):
+ self.__call_list.append('show_details')
+
+ def back_pressed(self,widget,data):
+ self.__call_list.append('back_pressed')
+
+ def edit_tutorial(self,widget,data):
+ self.__call_list.append('edit_tutorial')
+
+ def rate_tutorial(self,widget,data):
+ self.__call_list.append('rate_tutorial')
+
+ def update_tutorial(self,widget,tutorial):
+ self.__call_list.append('update_tutorial')
+
+ def info_tutorial(self,widget,tutorial):
+ self.__call_list.append('info_tutorial')
+
+ def delete_tutorial(self,widget,tutorial):
+ self.__call_list.append('delete_tutorial')
+
+ def publish_tutorial(self,widget,tutorial):
+ self,__call_list.append('publish_tutorial')
+
+ def unpublish_tutorial(self,widget,tutorial):
+ self,__call_list.append('unpublish_tutorial')
+
+class WorkshopModelMock():
+ def __init__(self):
+ self.__call_list ={}
+
+#method for handling the call list
+ def get_call_list(self):
+ return self.__call_list
+
+ def clear_call_list(self):
+ self.__call_list = {}
+
+ call_list = property(get_call_list)
+
+
+ def query(self,keyword):
+ self.__call_list['tutorial_query'] = keyword
+
+ def launch_tutorial(self,tutorial):
+ self.__call_list['launch_tutorial'] = tutorial
+
+ def rate_tutorial(self,tutorial,rating):
+ self.__call_list['rate_tutorial'] = (tutorial,rating)
+
+ def edit_tutorial(self,tutorial):
+ self.__call_list['edit_tutorial'] = tutorial
+
+ def save_metadata(self,tutorial):
+ self.__call_list['save_metadata'] = tutorial
+
+ def delete_tutorial(self,tutorial):
+ self.__call_list['delete_tutorial'] = tutorial
+
+ def update_tutorial_infos(self,tutorial,new_infos):
+ self.__call_list.append('update_tutorial_infos')
+
+ def publish_tutorial(self,tutorial):
+ self.__call_list['publish_tutorial'] = tutorial
+
+ def unpublish_tutorial(self,tutorial):
+ self.__call_list['unpublish_tutorial'] = tutorial
diff --git a/Workshop.activity/tests/run-tests.py b/Workshop.activity/tests/run-tests.py
new file mode 100644
index 0000000..5df8cc1
--- /dev/null
+++ b/Workshop.activity/tests/run-tests.py
@@ -0,0 +1,20 @@
+ACTIVITY_PATH = "../"
+
+import os, sys
+sys.path.insert(0,os.path.abspath(ACTIVITY_PATH))
+import unittest
+
+if __name__ == '__main__':
+ import WorkshopModel
+ import WorkshopController
+ import Workshop
+ import mocks
+ import MTTests
+
+
+ suite = unittest.TestSuite()
+ loader = unittest.TestLoader()
+ suite.addTest(loader.loadTestsFromModule(MTTests))
+
+ runner = unittest.TextTestRunner()
+ runner.run(suite)