Sha256: 2c35ffbaaff6a2b4a803ffac5aac7d0e68dac3a8382d9deaa769a8fa406f358b

Contents?: true

Size: 1.15 KB

Versions: 5

Compression:

Stored size: 1.15 KB

Contents

require 'spec_helper'

describe Encore::Persister do
  let(:persister) { Encore::Persister::Instance }
  let(:persist!) { persister.new(model, params).persist! }

  before do
    run_migrations!
    spawn_models!
  end

  let(:run_migrations!) do
    run_migration do
      create_table(:users, force: true) do |t|
        t.string :name, default: nil
      end
      create_table(:groups, force: true) do |t|
        t.string :name, default: nil
        t.integer :user_id, default: nil
      end
    end
  end

  let(:spawn_models!) do
    spawn_model('User') do
      has_one :group
    end
    spawn_model('Group') do
      belongs_to :user
    end
  end

  let(:model) { User }
  let(:group1) { Group.create name: 'a' }

  let(:params) do
    [{
      name: 'Allan',
      links: {
        group: group1.id.to_s
      }
    }]
  end

  it { expect { persist! }.to change { model.count }.by(1) }
  it { expect { persist! }.to change { model.first.try(:name) }.to('Allan') }
  it { expect { persist! }.to change { model.first.try(:group).try(:id) }.to(group1.id) }
  it { expect { persist! }.to change { model.first.try(:group).try(:user).try(:name) }.to('Allan') }
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
encore-0.2.3 spec/encore/persister/has_one_links_spec.rb
encore-0.2.2 spec/encore/persister/has_one_links_spec.rb
encore-0.2.1 spec/encore/persister/has_one_links_spec.rb
encore-0.2 spec/encore/persister/has_one_links_spec.rb
encore-0.1 spec/encore/persister/has_one_links_spec.rb