Revision 5ddb3741
Added by Marek Hulán about 9 years ago
test/unit/taxonomix_test.rb | ||
---|---|---|
assert_includes @dummy.organizations, taxonomies(:organization1)
|
||
assert_empty @dummy.locations
|
||
end
|
||
|
||
test ".with_taxonomy_scope expands organizations and locations to actual values" do
|
||
org1 = FactoryGirl.create(:organization)
|
||
org2 = FactoryGirl.create(:organization)
|
||
org3 = FactoryGirl.create(:organization)
|
||
user = FactoryGirl.create(:user, :organizations => [org1, org2])
|
||
dummy_class = @dummy.class
|
||
|
||
as_user(user) do
|
||
dummy_class.with_taxonomy_scope(nil, nil)
|
||
end
|
||
|
||
assert_empty dummy_class.which_location
|
||
assert_includes dummy_class.which_organization, org1
|
||
assert_includes dummy_class.which_organization, org2
|
||
refute_includes dummy_class.which_organization, org3
|
||
end
|
||
|
||
test ".used_location_ids can work with array of locations" do
|
||
loc1 = FactoryGirl.create(:location)
|
||
loc2 = FactoryGirl.create(:location, :parent_id => loc1)
|
||
loc3 = FactoryGirl.create(:location, :parent_id => loc2)
|
||
loc4 = FactoryGirl.create(:location)
|
||
dummy_class = @dummy.class
|
||
dummy_class.which_ancestry_method = :subtree_ids
|
||
|
||
dummy_class.which_location = []
|
||
used_locations = dummy_class.used_location_ids
|
||
assert_empty used_locations
|
||
|
||
dummy_class.which_location = [loc2]
|
||
used_locations = dummy_class.used_location_ids
|
||
assert_includes used_locations, loc1.id
|
||
assert_includes used_locations, loc2.id
|
||
assert_includes used_locations, loc3.id
|
||
refute_includes used_locations, loc4.id
|
||
|
||
dummy_class.which_location = [loc2, loc4]
|
||
used_locations = dummy_class.used_location_ids
|
||
assert_includes used_locations, loc1.id
|
||
assert_includes used_locations, loc2.id
|
||
assert_includes used_locations, loc3.id
|
||
assert_includes used_locations, loc4.id
|
||
end
|
||
|
||
test ".used_organization_ids can work with array of organizations" do
|
||
org1 = FactoryGirl.create(:organization)
|
||
org2 = FactoryGirl.create(:organization, :parent_id => org1)
|
||
org3 = FactoryGirl.create(:organization, :parent_id => org2)
|
||
org4 = FactoryGirl.create(:organization)
|
||
dummy_class = @dummy.class
|
||
dummy_class.which_ancestry_method = :subtree_ids
|
||
|
||
dummy_class.which_organization = []
|
||
used_organizations = dummy_class.used_organization_ids
|
||
assert_empty used_organizations
|
||
|
||
dummy_class.which_organization = [org2]
|
||
used_organizations = dummy_class.used_organization_ids
|
||
assert_includes used_organizations, org1.id
|
||
assert_includes used_organizations, org2.id
|
||
assert_includes used_organizations, org3.id
|
||
refute_includes used_organizations, org4.id
|
||
|
||
dummy_class.which_organization = [org2, org4]
|
||
used_organizations = dummy_class.used_organization_ids
|
||
assert_includes used_organizations, org1.id
|
||
assert_includes used_organizations, org2.id
|
||
assert_includes used_organizations, org3.id
|
||
assert_includes used_organizations, org4.id
|
||
end
|
||
|
||
test ".taxable_ids can work with empty array returning nil" do
|
||
dummy_class = @dummy.class
|
||
assert_nil dummy_class.taxable_ids([], [])
|
||
end
|
||
|
||
test ".taxable_ids (and .inner_select) can work with array of taxonomies" do
|
||
loc1 = FactoryGirl.create(:location)
|
||
loc2 = FactoryGirl.create(:location, :parent_id => loc1)
|
||
loc3 = FactoryGirl.create(:location, :parent_id => loc2)
|
||
loc4 = FactoryGirl.create(:location)
|
||
org = FactoryGirl.create(:organization)
|
||
env1 = FactoryGirl.create(:environment, :organizations => [org], :locations => [loc2])
|
||
env2 = FactoryGirl.create(:environment, :organizations => [org])
|
||
env3 = FactoryGirl.create(:environment, :locations => [loc2])
|
||
env4 = FactoryGirl.create(:environment, :locations => [loc4])
|
||
env5 = FactoryGirl.create(:environment, :locations => [loc1])
|
||
env6 = FactoryGirl.create(:environment, :locations => [loc3])
|
||
|
||
taxable_ids = Environment.taxable_ids([loc2, loc4], org, :subtree_ids)
|
||
visible = [ env1 ]
|
||
invisible = [ env2, env3, env4, env5, env6 ]
|
||
visible.each { |env| assert_includes taxable_ids, env.id }
|
||
invisible.each { |env| refute_includes taxable_ids, env.id }
|
||
|
||
taxable_ids = Environment.taxable_ids([], org, :subtree_ids)
|
||
visible = [ env1, env2 ]
|
||
invisible = [ env3, env4, env5, env6 ]
|
||
visible.each { |env| assert_includes taxable_ids, env.id }
|
||
invisible.each { |env| refute_includes taxable_ids, env.id }
|
||
|
||
taxable_ids = Environment.taxable_ids(loc2, [], :subtree_ids)
|
||
visible = [ env1, env3, env5, env6 ]
|
||
invisible = [ env2, env4 ]
|
||
visible.each { |env| assert_includes taxable_ids, env.id }
|
||
invisible.each { |env| refute_includes taxable_ids, env.id }
|
||
|
||
taxable_ids = Environment.taxable_ids([loc2, loc4], [], :subtree_ids)
|
||
visible = [ env1, env3, env4, env5, env6 ]
|
||
invisible = [ env2 ]
|
||
visible.each { |env| assert_includes taxable_ids, env.id }
|
||
invisible.each { |env| refute_includes taxable_ids, env.id }
|
||
end
|
||
end
|
Also available in: Unified diff
Fixes #9947 - restrict user taxonomies if none is set
(cherry picked from commit abe910f2a46f4ecc1f349263d0b4751ed46ff200)