Sha256: f6d9a627ad321abbf2e3f2d38e96d540986e184d4f93fcfb9c07c20f6d842209

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

require 'spec_helper'

describe 'Attribute Default Value' do
  context 'when given a default value' do
    class Meal
      include HappyMapper
      tag 'meal'
      attribute :type, String, default: 'omnivore'
    end

    let(:subject) { Meal }
    let(:default_meal_type) { 'omnivore' }

    context 'when no value has been specified' do
      it 'returns the default value' do
        meal = subject.parse('<meal />')
        expect(meal.type).to eq default_meal_type
      end
    end

    context 'when saving to xml' do
      let(:expected_xml) { %(<?xml version="1.0"?>\n<meal/>\n) }

      it 'the default value is not included' do
        meal = subject.new
        expect(meal.to_xml).to eq expected_xml
      end
    end

    context 'when a new, non-nil value has been set' do
      let(:expected_xml) { %(<?xml version="1.0"?>\n<meal type="kosher"/>\n) }

      it 'returns the new value' do
        meal = subject.parse('<meal />')
        meal.type = 'vegan'

        expect(meal.type).not_to eq default_meal_type
      end

      it 'saves the new value to the xml' do
        meal = subject.new
        meal.type = 'kosher'
        expect(meal.to_xml).to eq expected_xml
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nokogiri-happymapper-0.8.0 spec/features/attribute_default_value_spec.rb