Skip to content

Commit

Permalink
Set related object type when we set the id
Browse files Browse the repository at this point in the history
  • Loading branch information
tvdeyen committed Jun 3, 2021
1 parent 2b55244 commit 48606e0
Show file tree
Hide file tree
Showing 13 changed files with 77 additions and 11 deletions.
6 changes: 5 additions & 1 deletion app/models/alchemy/ingredient.rb
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,10 @@ def ingredient_attributes=(attributes)
attr_reader :ingredient_attributes

# Defines getter and setter method aliases for related object
def related_object_alias(name)
#
# @param [String|Symbol] The name of the alias
# @param [String] The class name of the related object
def related_object_alias(name, class_name:)
alias_method name, :related_object
alias_method "#{name}=", :related_object=

Expand All @@ -84,6 +87,7 @@ def related_object_alias(name)

define_method "#{name}_id=" do |id|
self.related_object_id = id
self.related_object_type = class_name
end
end

Expand Down
2 changes: 1 addition & 1 deletion app/models/alchemy/ingredients/audio.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class Audio < Alchemy::Ingredient
muted
]

related_object_alias :attachment
related_object_alias :attachment, class_name: "Alchemy::Attachment"

delegate :name, to: :attachment, allow_nil: true

Expand Down
2 changes: 1 addition & 1 deletion app/models/alchemy/ingredients/file.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class File < Alchemy::Ingredient
title
]

related_object_alias :attachment
related_object_alias :attachment, class_name: "Alchemy::Attachment"

delegate :name, to: :attachment, allow_nil: true

Expand Down
2 changes: 1 addition & 1 deletion app/models/alchemy/ingredients/node.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ module Ingredients
# Assign Alchemy::Node to this ingredient
#
class Node < Alchemy::Ingredient
related_object_alias :node
related_object_alias :node, class_name: "Alchemy::Node"

# The first 30 characters of node name
#
Expand Down
2 changes: 1 addition & 1 deletion app/models/alchemy/ingredients/page.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ module Ingredients
# Assign Alchemy::Page to this ingredient
#
class Page < Alchemy::Ingredient
related_object_alias :page
related_object_alias :page, class_name: "Alchemy::Page"

# The first 30 characters of page name
#
Expand Down
2 changes: 1 addition & 1 deletion app/models/alchemy/ingredients/picture.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class Picture < Alchemy::Ingredient
title
]

related_object_alias :picture
related_object_alias :picture, class_name: "Alchemy::Picture"

delegate :image_file_width, :image_file_height, :image_file, :name, to: :picture, allow_nil: true

Expand Down
2 changes: 1 addition & 1 deletion app/models/alchemy/ingredients/video.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class Video < Alchemy::Ingredient
width
]

related_object_alias :attachment
related_object_alias :attachment, class_name: "Alchemy::Attachment"

delegate :name, to: :attachment, allow_nil: true

Expand Down
17 changes: 16 additions & 1 deletion spec/models/alchemy/ingredients/audio_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
it_behaves_like "an alchemy ingredient"

let(:element) { build(:alchemy_element) }
let(:attachment) { build(:alchemy_attachment) }
let(:attachment) { build_stubbed(:alchemy_attachment) }

let(:audio_ingredient) do
described_class.new(
Expand Down Expand Up @@ -55,6 +55,21 @@
it { is_expected.to be(attachment) }
end

describe "#attachment_id" do
subject { audio_ingredient.attachment_id }

it { is_expected.to be_an(Integer) }
end

describe "#attachment_id=" do
let(:attachment) { Alchemy::Attachment.new(id: 111) }

subject { audio_ingredient.attachment_id = attachment.id }

it { is_expected.to be(111) }
it { expect(audio_ingredient.related_object_type).to eq("Alchemy::Attachment") }
end

describe "#preview_text" do
subject { audio_ingredient.preview_text }

Expand Down
1 change: 1 addition & 0 deletions spec/models/alchemy/ingredients/file_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
subject { file_ingredient.attachment_id = attachment.id }

it { is_expected.to be(111) }
it { expect(file_ingredient.related_object_type).to eq("Alchemy::Attachment") }
end

describe "preview_text" do
Expand Down
17 changes: 16 additions & 1 deletion spec/models/alchemy/ingredients/node_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
it_behaves_like "an alchemy ingredient"

let(:element) { build(:alchemy_element) }
let(:node) { build(:alchemy_node) }
let(:node) { build_stubbed(:alchemy_node) }

let(:node_ingredient) do
described_class.new(
Expand All @@ -31,6 +31,21 @@
it { is_expected.to be(node) }
end

describe "#node_id" do
subject { node_ingredient.node_id }

it { is_expected.to be_an(Integer) }
end

describe "#node_id=" do
let(:node) { Alchemy::Node.new(id: 111) }

subject { node_ingredient.node_id = node.id }

it { is_expected.to be(111) }
it { expect(node_ingredient.related_object_type).to eq("Alchemy::Node") }
end

describe "preview_text" do
subject { node_ingredient.preview_text }

Expand Down
17 changes: 16 additions & 1 deletion spec/models/alchemy/ingredients/page_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
it_behaves_like "an alchemy ingredient"

let(:element) { build(:alchemy_element) }
let(:page) { build(:alchemy_page) }
let(:page) { build_stubbed(:alchemy_page) }

let(:page_ingredient) do
described_class.new(
Expand All @@ -31,6 +31,21 @@
it { is_expected.to be(page) }
end

describe "#page_id" do
subject { page_ingredient.page_id }

it { is_expected.to be_an(Integer) }
end

describe "#page_id=" do
let(:page) { Alchemy::Page.new(id: 111) }

subject { page_ingredient.page_id = page.id }

it { is_expected.to be(111) }
it { expect(page_ingredient.related_object_type).to eq("Alchemy::Page") }
end

describe "preview_text" do
subject { page_ingredient.preview_text }

Expand Down
1 change: 1 addition & 0 deletions spec/models/alchemy/ingredients/picture_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
subject { picture_ingredient.picture_id = picture.id }

it { is_expected.to be(111) }
it { expect(picture_ingredient.related_object_type).to eq("Alchemy::Picture") }
end

describe "preview_text" do
Expand Down
17 changes: 16 additions & 1 deletion spec/models/alchemy/ingredients/video_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
it_behaves_like "an alchemy ingredient"

let(:element) { build(:alchemy_element) }
let(:attachment) { build(:alchemy_attachment) }
let(:attachment) { build_stubbed(:alchemy_attachment) }

let(:video_ingredient) do
described_class.new(
Expand Down Expand Up @@ -79,6 +79,21 @@
it { is_expected.to be(attachment) }
end

describe "#attachment_id" do
subject { video_ingredient.attachment_id }

it { is_expected.to be_an(Integer) }
end

describe "#attachment_id=" do
let(:attachment) { Alchemy::Attachment.new(id: 111) }

subject { video_ingredient.attachment_id = attachment.id }

it { is_expected.to be(111) }
it { expect(video_ingredient.related_object_type).to eq("Alchemy::Attachment") }
end

describe "#preview_text" do
subject { video_ingredient.preview_text }

Expand Down

0 comments on commit 48606e0

Please sign in to comment.