Beispiel #1
0
 def test_less_mocking_service_refreshed_when_refresh_button_clicked_test(
         self):
     """
     Test that a service is refreshed when the "Refresh Service" button is clicked
     """
     # GIVEN: An SelectPlanForm instance with airplane mode enabled, resources available,
     # mocked out "on_new_service_clicked"
     with patch('PyQt5.QtWidgets.QDialog.exec'), \
             patch('openlp.plugins.planningcenter.forms.selectplanform.date') as mock_date:
         # need to always return 9/29/2019 for date.today()
         mock_date.today.return_value = date(2019, 9, 29)
         mock_date.side_effect = lambda *args, **kw: date(*args, **kw)
         # init ServiceManager
         Registry().register('plugin_manager', MagicMock())
         Registry().register('application', MagicMock())
         Registry().register('renderer', MagicMock())
         self.service_manager = ServiceManager()
         self.service_manager.setup_ui(self.service_manager)
         # init songs plugin
         with patch('openlp.plugins.songs.lib.mediaitem.EditSongForm'), \
                 patch('openlp.plugins.custom.lib.mediaitem.EditCustomForm'), \
                 patch('openlp.core.lib.mediamanageritem.create_widget_action'), \
                 patch('openlp.core.widgets.toolbar.create_widget_action'):
             # init songs plugin
             songs_plugin = SongsPlugin()
             song_media_item = SongMediaItem(None, songs_plugin)
             song_media_item.search_text_edit = MagicMock()
             song_media_item.settings_section = 'songs'
             song_media_item.initialise()
             # init custom plugin
             custom_plugin = CustomPlugin()
             CustomMediaItem(None, custom_plugin)
             # init bible plugin
             bible_plugin = BiblePlugin()
             bible_media_item = BibleMediaItem(None, bible_plugin)
             bible_media_item.build_display_results = MagicMock()
             self.form.exec()
         # WHEN:
         # The Service Type combo is set to index 1 and "Import New" button is clicked
         self.form.service_type_combo_box.setCurrentIndex(1)
         QtTest.QTest.mouseClick(self.form.import_as_new_button,
                                 QtCore.Qt.LeftButton)
         # make changes to the now imported service items
         # first, for serviceitem[0] update last_updated in xml_string and change "sweet" to "sublime"
         old_match = re.search(
             'modifiedDate="(.+?)Z*"', self.service_manager.service_items[0]
             ['service_item'].xml_version)
         old_string = old_match.group(1)
         now_string = datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
         self.service_manager.service_items[0]['service_item'].xml_version = \
             self.service_manager.service_items[0]['service_item'].xml_version.replace(old_string, now_string)
         self.service_manager.service_items[0]['service_item'].xml_version = \
             self.service_manager.service_items[0]['service_item'].xml_version.replace("sweet", "sublime")
         # second, add the word modified to the slide text for serviceitem[1]
         self.service_manager.service_items[1]['service_item'].slides[0]['text'] = \
             self.service_manager.service_items[1]['service_item'].slides[0]['text'].replace("Test", "Modified Test")
         # third, delete serviceitems[2] and serviceitem[3]
         del self.service_manager.service_items[3]
         del self.service_manager.service_items[2]
         # last, draw the form again and request refresh
         self.form.exec()
         self.form.service_type_combo_box.setCurrentIndex(1)
         QtTest.QTest.mouseClick(self.form.update_existing_button,
                                 QtCore.Qt.LeftButton)
     # THEN:
     # There should be 4 service items added
     self.assertEqual(len(self.service_manager.service_items), 5,
                      '5 items should be in the ServiceManager')
     # Amazon Grace should still include sublime
     self.assertTrue('sublime' in self.service_manager.service_items[0]
                     ['service_item'].xml_version)
     # Slides in service_item[1] should still contain the word "Modified"
     self.assertTrue('Modified' in self.service_manager.service_items[1]
                     ['service_item'].slides[0]['text'])