Commit a70c44b190df0765b0f28f3a259df0b4c586d4ab

Authored by Moises Machado
1 parent dc7ddee6

ActionItem560: products is uniquely listed in the block

app/models/products_block.rb
@@ -41,7 +41,9 @@ class ProductsBlock < Block @@ -41,7 +41,9 @@ class ProductsBlock < Block
41 products_list = owner.products(reload) 41 products_list = owner.products(reload)
42 result = [] 42 result = []
43 [4, products_list.size].min.times do 43 [4, products_list.size].min.times do
44 - result << products_list.rand 44 + p = products_list.rand
  45 + result << p
  46 + products_list -= [p]
45 end 47 end
46 result 48 result
47 else 49 else
test/unit/products_block_test.rb
@@ -107,4 +107,20 @@ class ProductsBlockTest &lt; ActiveSupport::TestCase @@ -107,4 +107,20 @@ class ProductsBlockTest &lt; ActiveSupport::TestCase
107 assert_equal [1, 2], block.product_ids 107 assert_equal [1, 2], block.product_ids
108 end 108 end
109 109
  110 + should 'not repeat products' do
  111 + enterprise = Enterprise.create!(:name => 'test_enterprise', :identifier => 'test_enterprise')
  112 + p1 = enterprise.products.create!(:name => 'product one')
  113 + p2 = enterprise.products.create!(:name => 'product two')
  114 + p3 = enterprise.products.create!(:name => 'product three')
  115 + p4 = enterprise.products.create!(:name => 'product four')
  116 +
  117 + block = ProductsBlock.new
  118 + enterprise.boxes.first.blocks << block
  119 + block.save!
  120 +
  121 + 4.times do # to keep a minimal chance of false positive, its random after all
  122 + assert_equivalent [p1, p2, p3, p4], block.products
  123 + end
  124 + end
  125 +
110 end 126 end