From f0095397fd8a61367d39ae76bf63fb1c48885bbc Mon Sep 17 00:00:00 2001 From: Adam Jahn Date: Fri, 8 Jul 2016 15:05:48 -0400 Subject: implement helpers and reduce test duplication --- spec/support/augeas.rb | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 spec/support/augeas.rb (limited to 'spec/support') diff --git a/spec/support/augeas.rb b/spec/support/augeas.rb new file mode 100644 index 0000000..4912e1a --- /dev/null +++ b/spec/support/augeas.rb @@ -0,0 +1,67 @@ +require "delegate" + +module Augeas + class Change + attr_reader :target, :name, :delimiter + + def initialize(target, name, value = nil, delimiter = "\"") + @target = target + @name = name + @value = value + @delimiter = delimiter + end + + def to_s + "#{action} #{delimiter}target[. = '#{target}']/#{name}#{delimiter}#{value}" + end + + def hash + [target, name, Change].hash + end + + def eql?(other) + other.is_a?(self.class) && [other.target, other.name] == [target, name] + end + + private + + def action + return "set" unless @value.nil? + "rm " + end + + def value + " #{@value}" if @value + end + end + + class ChangeSet + def initialize + @set = {} + end + + def <<(change) + @set[change] = change + end + + def to_a + changes + end + + def changes + @set.values.map(&:to_s) + end + end + + class TargetedChangeSet < DelegateClass(ChangeSet) + def initialize(target) + @target = target + super(ChangeSet.new) + end + + def with(*args) + self << Change.new(@target, *args) + self + end + end +end -- cgit v1.2.3