don't modify the parameter string in Entity.entity_class

This commit is contained in:
Benjamin Neff 2016-03-12 20:04:21 +01:00
parent bfcfb6b95a
commit 4a7fd52844
2 changed files with 10 additions and 4 deletions

View file

@ -119,11 +119,11 @@ module DiasporaFederation
# #
# @see .entity_name # @see .entity_name
# #
# @param [String] class_name "snake_case" class name # @param [String] entity_name "snake_case" class name
# @return [Class] entity class # @return [Class] entity class
def self.entity_class(class_name) def self.entity_class(entity_name)
raise InvalidEntityName, "'#{class_name}' is invalid" unless class_name =~ /^[a-z]*(_[a-z]*)*$/ raise InvalidEntityName, "'#{entity_name}' is invalid" unless entity_name =~ /^[a-z]*(_[a-z]*)*$/
class_name.sub!(/^[a-z]/, &:upcase) class_name = entity_name.sub(/^[a-z]/, &:upcase)
class_name.gsub!(/_([a-z])/) { Regexp.last_match[1].upcase } class_name.gsub!(/_([a-z])/) { Regexp.last_match[1].upcase }
raise UnknownEntity, "'#{class_name}' not found" unless Entities.const_defined?(class_name) raise UnknownEntity, "'#{class_name}' not found" unless Entities.const_defined?(class_name)

View file

@ -211,6 +211,12 @@ XML
expect(Entity.entity_class("test_entity")).to eq(Entities::TestEntity) expect(Entity.entity_class("test_entity")).to eq(Entities::TestEntity)
end end
it "should not change the input string" do
entity_name = "test_entity"
Entity.entity_class(entity_name)
expect(entity_name).to eq("test_entity")
end
it "raises an error when the entity name contains special characters" do it "raises an error when the entity name contains special characters" do
expect { expect {
Entity.entity_class("te.st-enti/ty") Entity.entity_class("te.st-enti/ty")