From 1c0b5d7c47dc0ebfe8d445cfe81ff35dfbaf560f Mon Sep 17 00:00:00 2001 From: Charlie Date: Thu, 05 Nov 2009 15:55:20 +0000 Subject: Workshop activity My tutorials --- (limited to 'Workshop.activity/tests') 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) -- cgit v0.9.1