require 'spec_helper' # we use undefined numbers for field otherwise we interfere # with already defined fields in definitions.rb and test are # not really independant of the code describe FitParser::File::Definitions do describe '.add_field' do before :all do @fields = described_class.fields @dyn_fields = described_class.dyn_fields end after :all do FitParser::File::Definitions.fields = @fields FitParser::File::Definitions.dyn_fields = @dyn_fields end context 'without additional options' do before :each do FitParser::File::Definitions.fields = Hash.new { |h,k| h[k]={} } FitParser::File::Definitions.dyn_fields = Hash.new { |h,k| h[k]={} } described_class.add_field(999, 999, 'rspec_test') end it 'adds field data' do expect(described_class.get_field(999, 999)).to be_a(Hash) expect(described_class.get_field(999, 999)).to eql(name: 'rspec_test') end it 'raised an error for dynamic field data' do expect { described_class.add_field(999, 999, 'rspec_test_dyn') }.to raise_error end end context 'with additional options' do before :each do FitParser::File::Definitions.fields = Hash.new { |h, k| h[k] = {} } FitParser::File::Definitions.dyn_fields = Hash.new { |h, k| h[k] = {} } described_class.add_field(999, 999, 'rspec_test', scale: 100, units: 'm') described_class.add_field(999, 999, 'rspec_test_dyn', type: 4, scale: 10, offset: 10, ref_field_name: nil, ref_field_values: nil) end it 'adds field data' do expect(described_class.get_field(999, 999)).to be_a(Hash) expect(described_class.get_field(999, 999)).to eql(name: 'rspec_test', scale: 100, units: 'm') end it 'adds dynamic field data' do expect(described_class.get_dynamic_fields(999, 999)).to be_a(Hash) expect(described_class.get_dynamic_fields(999, 999)).to eql(rspec_test_dyn: { type: 4, scale: 10, offset: 10, ref_field_name: nil, ref_field_values: nil }) end end end describe '.get_field' do it 'returns nil if no field exists' do expect(described_class.get_field(100, 101)).to be_nil end end describe '.get_dynamic_field' do it 'returns nil if no dynamic field exists' do described_class.add_field(100, 100, 'rspec') expect(described_class.get_dynamic_fields(100, 100)).to be_nil end end describe '.add_name' do it 'adds a name' do described_class.add_name(20, 'record') expect(described_class.get_name(20)).to eql('record') end end describe '.get_name' do it 'returns nil if no name exists' do expect(described_class.get_name(100)).to be_nil end end end