Class: Remi::BusinessRules::DataSubjectCollection

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/remi/cucumber/business_rules.rb

Instance Method Summary collapse

Constructor Details

#initializeDataSubjectCollection

Returns a new instance of DataSubjectCollection.



160
161
162
# File 'lib/remi/cucumber/business_rules.rb', line 160

def initialize
  @subjects = {}
end

Instance Method Details

#[](subject_name) ⇒ Object



164
165
166
# File 'lib/remi/cucumber/business_rules.rb', line 164

def [](subject_name)
  @subjects[subject_name]
end

#add_field(full_field_name) ⇒ Object



180
181
182
183
184
185
186
187
188
189
# File 'lib/remi/cucumber/business_rules.rb', line 180

def add_field(full_field_name)
  if full_field_name.include? ':'
    subject_name, field_name = *Remi::BusinessRules.parse_full_field(full_field_name)
    @subjects[subject_name].add_field(field_name)
  else
    @subjects.each do |subject_name, subject|
      subject.add_field(full_field_name)
    end
  end
end

#add_subject(subject_name, subject) ⇒ Object



176
177
178
# File 'lib/remi/cucumber/business_rules.rb', line 176

def add_subject(subject_name, subject)
  @subjects[subject_name] ||= DataSubject.new(subject)
end

#each(&block) ⇒ Object



168
169
170
# File 'lib/remi/cucumber/business_rules.rb', line 168

def each(&block)
  @subjects.each &block
end

#fieldsObject



196
197
198
199
200
201
202
# File 'lib/remi/cucumber/business_rules.rb', line 196

def fields
  dfc = DataFieldCollection.new
  @subjects.each do |subject_name, subject|
    subject.fields.each { |field_name, field| dfc.add_field(subject, field_name) }
  end
  dfc
end

#keysObject



172
173
174
# File 'lib/remi/cucumber/business_rules.rb', line 172

def keys
  @subjects.keys
end

#onlyObject



191
192
193
194
# File 'lib/remi/cucumber/business_rules.rb', line 191

def only
  raise "Multiple subjects defined: #{keys}" unless @subjects.size == 1
  @subjects.values.first
end

#sizeObject



204
205
206
# File 'lib/remi/cucumber/business_rules.rb', line 204

def size
  @subjects.size
end

#total_sizeObject



208
209
210
# File 'lib/remi/cucumber/business_rules.rb', line 208

def total_size
  @subjects.reduce(0) { |sum, (name, subject)| sum += subject.size }
end