def test_ambiguous_plugins(): # We can load ok blocks even if there are bad blocks. cls = XBlock.load_class("good_block") assert_is(cls, UnambiguousBlock) # Trying to load bad blocks raises an exception. expected_msg = ( "Ambiguous entry points for bad_block: " "xblock.test.test_plugin.AmbiguousBlock1, " "xblock.test.test_plugin.AmbiguousBlock2" ) with assert_raises_regexp(AmbiguousPluginError, expected_msg): XBlock.load_class("bad_block") # We can use our own function as the select function. class MyOwnException(Exception): """We'll raise this from `boom`.""" pass def boom(identifier, entry_points): """A select function to prove user-defined functions are called.""" assert len(entry_points) == 2 assert identifier == "bad_block" raise MyOwnException("This is boom") with assert_raises_regexp(MyOwnException, "This is boom"): XBlock.load_class("bad_block", select=boom)
def test_ambiguous_plugins(): # We can load ok blocks even if there are bad blocks. cls = XBlock.load_class("good_block") assert_is(cls, UnambiguousBlock) # Trying to load bad blocks raises an exception. expected_msg = ("Ambiguous entry points for bad_block: " "xblock.test.test_plugin.AmbiguousBlock1, " "xblock.test.test_plugin.AmbiguousBlock2") with assert_raises_regexp(AmbiguousPluginError, expected_msg): XBlock.load_class("bad_block") # We can use our own function as the select function. class MyOwnException(Exception): """We'll raise this from `boom`.""" pass def boom(identifier, entry_points): """A select function to prove user-defined functions are called.""" assert len(entry_points) == 2 assert identifier == "bad_block" raise MyOwnException("This is boom") with assert_raises_regexp(MyOwnException, "This is boom"): XBlock.load_class("bad_block", select=boom)
def try_bad_handler_urls(self, context=None): # pylint: disable=W0613 """Force some assertions for the wrong kinds of handlers.""" # A completely non-existing function name. with assert_raises_regexp(ValueError, "function name"): self.runtime.handler_url(self, "this_doesnt_exist") # An existing function, but it isn't a handler. with assert_raises_regexp(ValueError, "handler name"): self.runtime.handler_url(self, "try_bad_handler_urls") return Fragment(u"Everything is Fine!")
def student_view(self, _context): """Try out some services.""" # i18n is available, and works. def assert_equals_unicode(str1, str2): """`str1` equals `str2`, and both are Unicode strings.""" assert_equals(str1, str2) assert isinstance(str1, unicode) assert isinstance(str2, unicode) i18n = self.runtime.service(self, "i18n") assert_equals_unicode(u"Welcome!", i18n.ugettext("Welcome!")) assert_equals_unicode(u"Plural", i18n.ungettext("Singular", "Plural", 0)) assert_equals_unicode(u"Singular", i18n.ungettext("Singular", "Plural", 1)) assert_equals_unicode(u"Plural", i18n.ungettext("Singular", "Plural", 2)) when = datetime(2013, 2, 14, 22, 30, 17) assert_equals_unicode(u"2013-02-14", i18n.strftime(when, "%Y-%m-%d")) assert_equals_unicode(u"Feb 14, 2013", i18n.strftime(when, "SHORT_DATE")) assert_equals_unicode(u"Thursday, February 14, 2013", i18n.strftime(when, "LONG_DATE")) assert_equals_unicode(u"Feb 14, 2013 at 22:30", i18n.strftime(when, "DATE_TIME")) assert_equals_unicode(u"10:30:17 PM", i18n.strftime(when, "TIME")) # secret_service is available. assert_equals(self.runtime.service(self, "secret_service"), 17) # no_such_service is not available, and raises an exception, because we # said we needed it. with assert_raises_regexp(NoSuchServiceError, "is not available"): self.runtime.service(self, "no_such_service") # another_not_service is not available, and returns None, because we # didn't need it, we only wanted it. assert_is(self.runtime.service(self, "another_not_service"), None)
def student_view(self, _context): """Try out some services.""" # i18n is available, and works. def assert_equals_unicode(str1, str2): """`str1` equals `str2`, and both are Unicode strings.""" assert_equals(str1, str2) assert isinstance(str1, unicode) assert isinstance(str2, unicode) i18n = self.runtime.service(self, "i18n") assert_equals_unicode(u"Welcome!", i18n.ugettext("Welcome!")) assert_equals_unicode(u"Plural", i18n.ungettext("Singular", "Plural", 0)) assert_equals_unicode(u"Singular", i18n.ungettext("Singular", "Plural", 1)) assert_equals_unicode(u"Plural", i18n.ungettext("Singular", "Plural", 2)) when = datetime(2013, 2, 14, 22, 30, 17) assert_equals_unicode(u"2013-02-14", i18n.strftime(when, "%Y-%m-%d")) assert_equals_unicode(u"Feb 14, 2013", i18n.strftime(when, "SHORT_DATE")) assert_equals_unicode(u"Thursday, February 14, 2013", i18n.strftime(when, "LONG_DATE")) assert_equals_unicode(u"Feb 14, 2013 at 22:30", i18n.strftime(when, "DATE_TIME")) assert_equals_unicode(u"10:30:17 PM", i18n.strftime(when, "TIME")) # secret_service is available. assert_equals(self.runtime.service(self, "secret_service"), 17) # no_such_service is not available, and raises an exception, because we # said we needed it. with assert_raises_regexp(NoSuchServiceError, "is not available"): self.runtime.service(self, "no_such_service") # another_not_service is not available, and returns None, because we # didn't need it, we only wanted it. assert_is(self.runtime.service(self, "another_not_service"), None) return Fragment()
def test_open_local_resource_with_no_resources_dir(self, uri): unloadable = self.UnloadableXBlock(None, scope_ids=None) with patch('pkg_resources.resource_stream', self.stub_resource_stream): msg = "not configured to serve local resources" with assert_raises_regexp(DisallowedFileError, msg): unloadable.open_local_resource(uri)
def student_view(self, _context): """Try out some services.""" # i18n is available, and works. def assert_equals_unicode(str1, str2): """`str1` equals `str2`, and both are Unicode strings.""" assert_equals(str1, str2) assert isinstance(str1, unicode) assert isinstance(str2, unicode) i18n = self.runtime.service(self, "i18n") assert_equals_unicode(u"Welcome!", i18n.ugettext("Welcome!")) assert_equals_unicode(u"Plural", i18n.ungettext("Singular", "Plural", 0)) assert_equals_unicode(u"Singular", i18n.ungettext("Singular", "Plural", 1)) assert_equals_unicode(u"Plural", i18n.ungettext("Singular", "Plural", 2)) # secret_service is available. assert_equals(self.runtime.service(self, "secret_service"), 17) # no_such_service is not available, and raises an exception, because we # said we needed it. with assert_raises_regexp(NoSuchServiceError, "is not available"): self.runtime.service(self, "no_such_service") # another_not_service is not available, and returns None, because we # didn't need it, we only wanted it. assert_is(self.runtime.service(self, "another_not_service"), None)
def test_nosuch_plugin(): # We can provide a default class to return for missing plugins. cls = XBlock.load_class("nosuch_block", default=UnambiguousBlock) assert_is(cls, UnambiguousBlock) # If we don't provide a default class, an exception is raised. with assert_raises_regexp(PluginMissingError, "nosuch_block"): XBlock.load_class("nosuch_block")
def student_view(self, context): """Try the services.""" # First, call the super class, its assertions should still pass. super(SubXBlockWithServices, self).student_view(context) # no_such_service_sub is not available, and raises an exception, # because we said we needed it. with assert_raises_regexp(NoSuchServiceError, "is not available"): self.runtime.service(self, "no_such_service_sub") # another_not_service_sub is not available, and returns None, # because we didn't need it, we only wanted it. assert_is(self.runtime.service(self, "another_not_service_sub"), None)
def test_open_bad_local_resource(self, uri): loadable = self.LoadableXBlock(None, scope_ids=None) with patch('pkg_resources.resource_stream', self.stub_resource_stream): msg = ".*: %s" % re.escape(repr(uri)) with assert_raises_regexp(DisallowedFileError, msg): loadable.open_local_resource(uri)