Sha256: 34f242d83e0e0a4c92d6d0a4d30e93c9cbdeeaeb1d8edf8f011c31360cfb8004
Contents?: true
Size: 1.87 KB
Versions: 3
Compression:
Stored size: 1.87 KB
Contents
require 'spec_helper' describe SpeakyCsv::Base do describe 'define_csv_fields' do let(:parent_klass) { Class.new SpeakyCsv::Base } let(:child_klass) { Class.new parent_klass } context 'when parent class has config' do before do parent_klass.class_eval do define_csv_fields do |d| d.field :name d.has_many :reviews do |r| r.field :tomatoes end end end end it 'inherits it for child' do expect(child_klass.csv_field_builder.fields).to eq [:name] expect(child_klass.csv_field_builder.has_manys.keys).to eq [:reviews] expect(child_klass.csv_field_builder.has_manys[:reviews].fields).to eq [:tomatoes] end context 'and child adds to it' do before do child_klass.class_eval do define_csv_fields do |d| d.field :author d.has_many :sales do |s| s.field :period end d.has_many :reviews do |r| r.field :publication end end end end it 'adds it to child' do expect(child_klass.csv_field_builder.fields).to eq [:name, :author] expect(child_klass.csv_field_builder.has_manys.keys.sort).to eq [:reviews, :sales].sort expect(child_klass.csv_field_builder.has_manys[:reviews].fields).to eq [:tomatoes, :publication] expect(child_klass.csv_field_builder.has_manys[:sales].fields).to eq [:period] end it 'doesnt change parents config' do expect(parent_klass.csv_field_builder.fields).to_not include :author expect(parent_klass.csv_field_builder.has_manys.keys).to_not include :sales expect(parent_klass.csv_field_builder.has_manys[:reviews].fields).to_not include :publication end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
speaky_csv-0.0.3 | spec/base_spec.rb |
speaky_csv-0.0.2 | spec/base_spec.rb |
speaky_csv-0.0.1 | spec/base_spec.rb |