def test_plugin_retrieve_raises_on_invalid_limit_offset(self):
        self.assertEquals(0, self.plugin_service.count(),
                          msg='Database is not empty in beginning')
        self.plugin_service.add(Plugin(name=u'Plugin_1', module=u'Module'))

        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve(offset=-1)
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve(offset='0')
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve(offset='ID')
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve(offset=3.1415297)
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve(offset=[])

        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve(limit=-1)
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve(limit='0')
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve(limit='ID')
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve(limit=3.1415297)
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve(limit=[])
 def test_plugin_add_increases_count(self):
     self.assertEquals(0, self.plugin_service.count(),
                       msg='Database is not empty in beginning')
     db_plugin = self.plugin_service.add(Plugin(name=u'Plugin',
                                                module=u'Module'))
     self.assertEquals(1, self.plugin_service.count(),
                       msg='Plugin is not added to database')
     self.assertIsInstance(db_plugin, Plugin, msg='')
    def test_plugin_add_raises_on_partial_duplicate(self):
        self.assertEquals(0, self.plugin_service.count(),
                          msg='Database is not empty in beginning')
        self.plugin_service.add(Plugin(name=u'PluginA1',
                                       module=u'ModuleA'))
        self.assertEquals(1, self.plugin_service.count(),
                          msg='Plugin not inserted')

        with self.assertRaises(ObjectCubeException):
            self.plugin_service.add(Plugin(name=u'PluginA1',
                                           module=u'ModuleB'))
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.add(Plugin(name=u'PluginB1',
                                           module=u'ModuleA'))

        self.assertEquals(1, self.plugin_service.count(),
                          msg='Could add partially duplicate plugin')
 def _create_plugins(self, num_plugins, name_prefix=u'Plugin_'):
     plugins = []
     for i in range(num_plugins):
         plugins.append(self.plugin_service.add(
             Plugin(
                 name=u'{0}{1}'.format(name_prefix, i),
                 module=u'return pass; {0}'.format(i)
             )
         ))
     return plugins
    def test_plugin_retrieve_by_id_returns_nothing_for_non_existing_id(self):
        self.assertEquals(0, self.plugin_service.count(),
                          msg='Database is not empty in beginning')
        self.plugin_service.add(Plugin(name=u'Plugin_1', module=u'Module'))

        self.assertEquals(self.plugin_service.retrieve_by_id(id_=-1L), None,
                          msg='Something found')
        self.assertEquals(self.plugin_service.retrieve_by_id(id_=0L), None,
                          msg='Something found')
        self.assertEquals(self.plugin_service.retrieve_by_id(id_=2000L), None,
                          msg='Something found')
    def test_plugin_add_raises_on_invalid_input(self):
        self.assertEquals(0, self.plugin_service.count(),
                          msg='Database is not empty in beginning')

        with self.assertRaises(ObjectCubeException):
            self.plugin_service.add(None)
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.add([])

        # There should be no ID
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.add(Plugin(id=12L, name=u'Plugin_1',
                                           module=u'Module'))
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.add(Plugin(id='12', name=u'Plugin_1',
                                           module=u'Module'))
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.add(Plugin(id=3.1415297, name=u'Plugin_1',
                                           module=u'Module'))

        # The name should be a string
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.add(Plugin(name=12,
                                           module=u'Module'))
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.add(Plugin(name=3.1415297,
                                           module=u'Module'))
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.add(Plugin(name=[],
                                           module=u'Module'))

        # The module should be a string
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.add(Plugin(name=u'Plugin_1',
                                           module=12))
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.add(Plugin(name=u'Plugin_1',
                                           module=3.1415297))
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.add(Plugin(name=u'Plugin_1',
                                           module=[]))

        self.assertEquals(0, self.plugin_service.count(),
                          msg='Could add invalid plugin')
    def test_plugin_retrieve_by_regex_raises_on_invalid_regex(self):
        self.assertEquals(0, self.plugin_service.count(),
                          msg='Database is not empty in beginning')
        self.plugin_service.add(Plugin(name=u'Plugin_1',
                                       module=u'Module'))

        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve_by_regex(name=-1)
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve_by_regex(name=0)
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve_by_regex(name=1)
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve_by_regex(name=3.1415297)
        with self.assertRaises(ObjectCubeException):
            self.plugin_service.retrieve_by_regex(name=[])