refactored shared_entity_specs.rb

This commit is contained in:
Benjamin Neff 2015-10-28 03:04:17 +01:00
parent 42e994e01e
commit d5041912f3

View file

@ -43,9 +43,8 @@ shared_examples "an XML Entity" do
context "parsing" do context "parsing" do
it "reads its own output" do it "reads its own output" do
packed_xml = DiasporaFederation::Salmon::XmlPayload.pack(instance).to_s packed_xml = DiasporaFederation::Salmon::XmlPayload.pack(instance)
xml_root = Nokogiri::XML::Document.parse(packed_xml).root parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(packed_xml)
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(xml_root)
check_entity(instance, parsed_instance) check_entity(instance, parsed_instance)
end end
@ -54,23 +53,18 @@ shared_examples "an XML Entity" do
def check_entity(entity, parsed_entity) def check_entity(entity, parsed_entity)
entity.class.class_props.each do |prop_def| entity.class.class_props.each do |prop_def|
name = prop_def[:name] name = prop_def[:name]
type = prop_def[:type]
value = entity.send(name) validate_values(entity.send(name), parsed_entity.send(name), prop_def[:type])
parsed_value = parsed_entity.send(name)
validate_values(parsed_value, type, value)
end end
end end
def validate_values(parsed_value, type, value) def validate_values(value, parsed_value, type)
if value.nil? if value.nil?
expect(parsed_value).to be_nil expect(parsed_value).to be_nil
elsif type == String elsif type == String
expect(parsed_value).to eq(value.to_s) expect(parsed_value).to eq(value.to_s)
elsif type.instance_of?(Array) elsif type.instance_of?(Array)
parsed_entities = parsed_value value.each_with_index {|entity, index| check_entity(entity, parsed_value[index]) }
value.each_with_index { |entity, index| check_entity(entity, parsed_entities[index]) }
elsif type.ancestors.include?(DiasporaFederation::Entity) elsif type.ancestors.include?(DiasporaFederation::Entity)
check_entity(value, parsed_value) check_entity(value, parsed_value)
end end