def test_update_app_cached_updated_apps(self, update_initial_data_patch, mock_load_app):
        """
        Tests that the app gets added to updated apps and it is cached
        """
        initial_data_manager = InitialDataUpdater()
        initial_data_manager.update_app('dynamic_initial_data')
        self.assertEqual(1, update_initial_data_patch.call_count)

        # make sure it doesn't call update static again
        initial_data_manager.update_app('dynamic_initial_data')
        self.assertEqual(1, update_initial_data_patch.call_count)

        # make sure the app is in the updated_apps list
        self.assertIn('dynamic_initial_data', initial_data_manager.updated_apps)
    def test_get_dependency_call_list(self):
        """
        Makes sure that dependency cycles are found and raises an exception
        """
        initial_data_manager = InitialDataUpdater()
        with patch('dynamic_initial_data.base.InitialDataUpdater.load_app', spec_set=True) as load_app_patch:
            load_app_patch.return_value = MockThree

            with self.assertRaises(InitialDataCircularDependency):
                initial_data_manager.update_app('MockThree')

        initial_data_manager = InitialDataUpdater()
        with self.assertRaises(InitialDataMissingApp):
            initial_data_manager.get_dependency_call_list('fake')
    def test_get_dependency_call_list(self):
        """
        Makes sure that dependency cycles are found and raises an exception
        """
        initial_data_manager = InitialDataUpdater()
        with patch('dynamic_initial_data.base.InitialDataUpdater.load_app',
                   spec_set=True) as load_app_patch:
            load_app_patch.return_value = MockThree

            with self.assertRaises(InitialDataCircularDependency):
                initial_data_manager.update_app('MockThree')

        initial_data_manager = InitialDataUpdater()
        with self.assertRaises(InitialDataMissingApp):
            initial_data_manager.get_dependency_call_list('fake')
Beispiel #4
0
    def test_update_app_cached_updated_apps(self, update_initial_data_patch,
                                            mock_load_app):
        """
        Tests that the app gets added to updated apps and it is cached
        """
        initial_data_manager = InitialDataUpdater()
        initial_data_manager.update_app('dynamic_initial_data')
        self.assertEqual(1, update_initial_data_patch.call_count)

        # make sure it doesn't call update static again
        initial_data_manager.update_app('dynamic_initial_data')
        self.assertEqual(1, update_initial_data_patch.call_count)

        # make sure the app is in the updated_apps list
        self.assertIn('dynamic_initial_data',
                      initial_data_manager.updated_apps)
    def test_update_app(self):
        """
        Tests the update_app method
        """
        # an error should only be raised for missing dependencies and not for directly
        # calling update on an app that doesn't have an initial data file
        initial_data_manager = InitialDataUpdater()
        initial_data_manager.update_app('fake')

        # make sure app gets added to updated apps
        initial_data_manager = InitialDataUpdater()
        with patch('dynamic_initial_data.base.InitialDataUpdater.get_class_path', spec_set=True) as get_path_patch:
            get_path_patch.return_value = 'dynamic_initial_data.tests.mocks.MockInitialData'

            # patch the update_initial_data method so we make sure it is called
            update_initial_data_patcher = patch('dynamic_initial_data.tests.mocks.MockInitialData.update_initial_data')
            update_initial_data_patch = update_initial_data_patcher.start()
            initial_data_manager.update_app('dynamic_initial_data')
            self.assertEqual(1, update_initial_data_patch.call_count)

            # make sure it doesn't call update static again
            initial_data_manager.update_app('dynamic_initial_data')
            self.assertEqual(1, update_initial_data_patch.call_count)

            # stop the patcher
            update_initial_data_patcher.stop()

            # make sure the app is in the updated_apps list
            self.assertIn('dynamic_initial_data', initial_data_manager.updated_apps)

        # test dependencies
        def app_loader(app):
            if app == 'MockOne':
                return MockOne
            elif app == 'MockTwo':
                return MockTwo
            return None

        # coverage
        app_loader(None)

        initial_data_manager = InitialDataUpdater()
        with patch('dynamic_initial_data.base.InitialDataUpdater.load_app', spec_set=True) as load_app_patch:
            load_app_patch.side_effect = app_loader

            # patch update_initial_data methods
            update_initial_data_patcher1 = patch('dynamic_initial_data.tests.mocks.MockOne.update_initial_data')
            update_initial_data_patcher2 = patch('dynamic_initial_data.tests.mocks.MockTwo.update_initial_data')
            update_initial_data_patch1 = update_initial_data_patcher1.start()
            update_initial_data_patch2 = update_initial_data_patcher2.start()

            initial_data_manager.update_app('MockTwo')
            self.assertEqual(1, update_initial_data_patch1.call_count)
            self.assertEqual(1, update_initial_data_patch2.call_count)

            update_initial_data_patcher1.stop()
            update_initial_data_patcher2.stop()
 def handle(self, *args, **options):
     updater = InitialDataUpdater(options)
     if options['app']:
         updater.update_app(options['app'])
     else:
         updater.update_all_apps()
Beispiel #7
0
 def handle(self, *args, **options):
     updater = InitialDataUpdater(options)
     if options['app']:
         updater.update_app(options['app'])
     else:
         updater.update_all_apps()
    def test_update_app(self):
        """
        Tests the update_app method
        """
        # an error should only be raised for missing dependencies and not for directly
        # calling update on an app that doesn't have an initial data file
        initial_data_manager = InitialDataUpdater()
        initial_data_manager.update_app('fake')

        # make sure app gets added to updated apps
        initial_data_manager = InitialDataUpdater()
        with patch(
                'dynamic_initial_data.base.InitialDataUpdater.get_class_path',
                spec_set=True) as get_path_patch:
            get_path_patch.return_value = 'dynamic_initial_data.tests.mocks.MockInitialData'

            # patch the update_initial_data method so we make sure it is called
            update_initial_data_patcher = patch(
                'dynamic_initial_data.tests.mocks.MockInitialData.update_initial_data'
            )
            update_initial_data_patch = update_initial_data_patcher.start()
            initial_data_manager.update_app('dynamic_initial_data')
            self.assertEqual(1, update_initial_data_patch.call_count)

            # make sure it doesn't call update static again
            initial_data_manager.update_app('dynamic_initial_data')
            self.assertEqual(1, update_initial_data_patch.call_count)

            # stop the patcher
            update_initial_data_patcher.stop()

            # make sure the app is in the updated_apps list
            self.assertIn('dynamic_initial_data',
                          initial_data_manager.updated_apps)

        # test dependencies
        def app_loader(app):
            if app == 'MockOne':
                return MockOne
            elif app == 'MockTwo':
                return MockTwo
            return None

        # coverage
        app_loader(None)

        initial_data_manager = InitialDataUpdater()
        with patch('dynamic_initial_data.base.InitialDataUpdater.load_app',
                   spec_set=True) as load_app_patch:
            load_app_patch.side_effect = app_loader

            # patch update_initial_data methods
            update_initial_data_patcher1 = patch(
                'dynamic_initial_data.tests.mocks.MockOne.update_initial_data')
            update_initial_data_patcher2 = patch(
                'dynamic_initial_data.tests.mocks.MockTwo.update_initial_data')
            update_initial_data_patch1 = update_initial_data_patcher1.start()
            update_initial_data_patch2 = update_initial_data_patcher2.start()

            initial_data_manager.update_app('MockTwo')
            self.assertEqual(1, update_initial_data_patch1.call_count)
            self.assertEqual(1, update_initial_data_patch2.call_count)

            update_initial_data_patcher1.stop()
            update_initial_data_patcher2.stop()