refactored shared_entity_specs.rb
This commit is contained in:
parent
42e994e01e
commit
d5041912f3
1 changed files with 5 additions and 11 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue