Commit a70c44b190df0765b0f28f3a259df0b4c586d4ab
1 parent
dc7ddee6
Exists in
master
and in
29 other branches
ActionItem560: products is uniquely listed in the block
Showing
2 changed files
with
19 additions
and
1 deletions
Show diff stats
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 < ActiveSupport::TestCase | @@ -107,4 +107,20 @@ class ProductsBlockTest < 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 |