From a70c44b190df0765b0f28f3a259df0b4c586d4ab Mon Sep 17 00:00:00 2001 From: Moises Machado Date: Wed, 8 Oct 2008 14:50:10 -0300 Subject: [PATCH] ActionItem560: products is uniquely listed in the block --- app/models/products_block.rb | 4 +++- test/unit/products_block_test.rb | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/models/products_block.rb b/app/models/products_block.rb index be1ebb2..a438a64 100644 --- a/app/models/products_block.rb +++ b/app/models/products_block.rb @@ -41,7 +41,9 @@ class ProductsBlock < Block products_list = owner.products(reload) result = [] [4, products_list.size].min.times do - result << products_list.rand + p = products_list.rand + result << p + products_list -= [p] end result else diff --git a/test/unit/products_block_test.rb b/test/unit/products_block_test.rb index 718f0eb..3f1295d 100644 --- a/test/unit/products_block_test.rb +++ b/test/unit/products_block_test.rb @@ -107,4 +107,20 @@ class ProductsBlockTest < ActiveSupport::TestCase assert_equal [1, 2], block.product_ids end + should 'not repeat products' do + enterprise = Enterprise.create!(:name => 'test_enterprise', :identifier => 'test_enterprise') + p1 = enterprise.products.create!(:name => 'product one') + p2 = enterprise.products.create!(:name => 'product two') + p3 = enterprise.products.create!(:name => 'product three') + p4 = enterprise.products.create!(:name => 'product four') + + block = ProductsBlock.new + enterprise.boxes.first.blocks << block + block.save! + + 4.times do # to keep a minimal chance of false positive, its random after all + assert_equivalent [p1, p2, p3, p4], block.products + end + end + end -- libgit2 0.21.2