Skip to content

Commit

Permalink
Add specs for ProductSerializer
Browse files Browse the repository at this point in the history
  • Loading branch information
ikapelyukhin committed Jan 17, 2018
1 parent 61663f7 commit d1ffc94
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 1 deletion.
4 changes: 3 additions & 1 deletion spec/factories/products.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,15 @@
base_products []
predecessor nil
root_product nil
recommended false
end

after :create do |product, evaluator|
evaluator.base_products.each do |base_product|
product.product_extensions_associations << ProductsExtensionsAssociation.create(
product: base_product,
root_product: evaluator.root_product || base_product
root_product: evaluator.root_product || base_product,
recommended: evaluator.recommended
)
end

Expand Down
55 changes: 55 additions & 0 deletions spec/serializers/v3/product_serializer_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
require 'rails_helper'

describe V3::ProductSerializer do
let(:sled15) { create(:product, name: 'SLED') }
let(:sles15) { create(:product, name: 'SLES') }
let!(:basesystem) do
create(:product, :extension, name: 'BASESYSTEM', base_products: [sles15, sled15], recommended: true)
end
let!(:server_applications) do
create(:product, :extension, name: 'SERVER APPLICATIONS', base_products: [basesystem], root_product: sles15)
end
let(:base_url) { 'http://example.com' }

describe 'SLES extension tree' do
subject(:serializer) { described_class.new(sles15, root_product: sles15, base_url: base_url) }

let(:top_extension) { serializer.as_json[:extensions].first }
let(:nested_extension) { top_extension[:extensions].first }

it 'has base system extension' do
expect(top_extension[:name]).to eq(basesystem.name)
end

it 'has base system and it is recommended' do
expect(top_extension[:recommended]).to eq(true)
end

it 'has server applications extension' do
expect(nested_extension[:name]).to eq(server_applications.name)
end

it 'has server applications extension and it is not recommended' do
expect(nested_extension[:recommended]).to eq(false)
end
end

describe 'SLED extension tree' do
subject(:serializer) { described_class.new(sled15, root_product: sled15, base_url: base_url) }

let(:top_extension) { serializer.as_json[:extensions].first }
let(:nested_extension) { top_extension[:extensions].first }

it 'has base system extension' do
expect(top_extension[:name]).to eq(basesystem.name)
end

it 'has base system and it is recommended' do
expect(top_extension[:recommended]).to eq(true)
end

it 'has no nested extensions' do
expect(nested_extension).to be_nil
end
end
end

0 comments on commit d1ffc94

Please sign in to comment.