text: # Copyright 2016 Tesora, Inc.
  # All Rights Reserved.
  #
  #    Licensed under the Apache License, Version 2.0 (the "License"); you may
  #    not use this file except in compliance with the License. You may obtain
  #    a copy of the License at
  #
  #         http://www.apache.org/licenses/LICENSE-2.0
  #
  #    Unless required by applicable law or agreed to in writing, software
  #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  #    License for the specific language governing permissions and limitations
  #    under the License.
  #
  
  from unittest.mock import Mock, patch
  from trove.datastore import models
  from trove.module.views import DetailedModuleView
  from trove.tests.unittests import trove_testtools
  
  
  class ModuleViewsTest(trove_testtools.TestCase):
  
      def setUp(self):
          super(ModuleViewsTest, self).setUp()
  
      def tearDown(self):
          super(ModuleViewsTest, self).tearDown()
  
  
  class DetailedModuleViewTest(trove_testtools.TestCase):
  
      def setUp(self):
          super(DetailedModuleViewTest, self).setUp()
          self.module = Mock()
          self.module.name = 'test_module'
          self.module.type = 'test'
          self.module.md5 = 'md5-hash'
          self.module.created = 'Yesterday'
          self.module.updated = 'Now'
          self.module.datastore = 'mysql'
          self.module.datastore_version = '5.7'
          self.module.auto_apply = False
          self.module.tenant_id = 'my_tenant'
          self.module.is_admin = False
          self.module.priority_apply = False
          self.module.apply_order = 5
  
      def tearDown(self):
          super(DetailedModuleViewTest, self).tearDown()
  
      def test_data(self):
          datastore = Mock()
          datastore.name = self.module.datastore
          ds_version = Mock()
          ds_version.name = self.module.datastore_version
          with patch.object(models, 'get_datastore_version',
                            Mock(return_value=(datastore, ds_version))):
              view = DetailedModuleView(self.module)
              result = view.data()
              self.assertEqual(self.module.name, result['module']['name'])
              self.assertEqual(self.module.type, result['module']['type'])
              self.assertEqual(self.module.md5, result['module']['md5'])
              self.assertEqual(self.module.created, result['module']['created'])
              self.assertEqual(self.module.updated, result['module']['updated'])
              self.assertEqual(self.module.datastore_version,
                               result['module']['datastore_version'])
              self.assertEqual(self.module.datastore,
                               result['module']['datastore'])
              self.assertEqual(self.module.auto_apply,
                               result['module']['auto_apply'])
              self.assertEqual(self.module.tenant_id,
                               result['module']['tenant_id'])
              self.assertEqual(self.module.is_admin,
                               result['module']['is_admin'])
              self.assertEqual(self.module.priority_apply,
                               result['module']['priority_apply'])
              self.assertEqual(self.module.apply_order,
                               result['module']['apply_order'])
  