reality-facets 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f23339993cae2804cb73979adf965189ab5cbe37
4
- data.tar.gz: 70a5504ae8d6988cb6074bd6afdf32747ab21335
3
+ metadata.gz: aaee53f948adda58251e2f3ed1f9baba8bf9c0fb
4
+ data.tar.gz: 39e3c353a2b61b59112f1864366238e526266511
5
5
  SHA512:
6
- metadata.gz: ad45c2f079f665cd67328bb204052187d15f8c23215726f609193502c4510bea1b23c73f22e77e4018f976fb72484c679c2e370d122b928716f09dd5c419e8e0
7
- data.tar.gz: d0701c1806a08070ef1de14144449bd9350c3ae5209b18a52d9fdffdbd199767aea986d4eea5db01c5acc99f9539bc1764e6942bf1b17f20590766a12c35ea53
6
+ metadata.gz: f4bd237fe33ec7553bf813dbd25e8b1295597fa166378798c3b20c09a9ee32dd8168f0ec2c3f68f6c4a03d9e2deeb766354f49e46602d7b31a74aeb704802ab2
7
+ data.tar.gz: 5c7c1be235ed4455bbdc9bfd92e50df41d7fb8a9e159284da00f677b4012ae494b18971b120d22a84b8ef46498fa80538e4b9a9d4419b38df49d70ae4e1bc74a
@@ -56,6 +56,23 @@ module Reality #nodoc
56
56
  self.const_get(:FacetDefinitions)
57
57
  end
58
58
 
59
+ def dependent_facets(*facet_keys)
60
+ facet_keys = facet_keys[0] if facet_keys.size == 1 && facet_keys[0].is_a?(Array)
61
+ to_process = facet_keys.dup
62
+ results = []
63
+ until to_process.empty?
64
+ facet_key = to_process.pop
65
+ results << facet_key
66
+ facet = facet_by_name(facet_key)
67
+ facet.required_facets.each do |required_facet_key|
68
+ if !results.include?(required_facet_key) && !to_process.include?(required_facet_key)
69
+ to_process << required_facet_key
70
+ end
71
+ end
72
+ end
73
+ results
74
+ end
75
+
59
76
  def activate_facet(object, facet_key)
60
77
  return if object.facet_enabled?(facet_key)
61
78
 
@@ -71,9 +71,10 @@ module Reality #nodoc
71
71
  end
72
72
  end
73
73
 
74
- def disable_facets_not_in(keys)
74
+ def disable_facets_not_in(*keys)
75
75
  keys = keys[0] if keys.size == 1 && keys[0].is_a?(Array)
76
- (self.enabled_facets - keys).each do |facet_key|
76
+ facets_to_disable = self.enabled_facets - facet_container.dependent_facets(keys)
77
+ facets_to_disable.each do |facet_key|
77
78
  self.disable_facet(facet_key) if self.facet_enabled?(facet_key)
78
79
  end
79
80
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{reality-facets}
5
- s.version = '1.0.0'
5
+ s.version = '1.1.0'
6
6
  s.platform = Gem::Platform::RUBY
7
7
 
8
8
  s.authors = ['Peter Donald']
@@ -61,4 +61,16 @@ class Reality::Facets::TestFacetContainer < Reality::TestCase
61
61
 
62
62
  assert_raise_message("Unknown definition form '{:x=>:y, :z=>1}'") { TestFacetContainer.facet(:x => :y, :z => 1) }
63
63
  end
64
+
65
+ def test_dependent_facets
66
+ TestFacetContainer.facet(:gwt)
67
+ TestFacetContainer.facet(:gwt_rpc => [:gwt])
68
+ TestFacetContainer.facet(:imit => [:gwt_rpc, :jpa])
69
+ TestFacetContainer.facet(:ee)
70
+ TestFacetContainer.facet(:jpa => [:ee])
71
+
72
+ assert_equal [:gwt], TestFacetContainer.dependent_facets(:gwt)
73
+ assert_equal [:imit, :jpa, :ee, :gwt_rpc, :gwt].sort, TestFacetContainer.dependent_facets(:imit).sort
74
+ assert_equal [:jpa, :ee].sort, TestFacetContainer.dependent_facets(:jpa).sort
75
+ end
64
76
  end
@@ -167,6 +167,18 @@ class Reality::Facets::TestFacetedModel < Reality::TestCase
167
167
  assert_equal [:gwt, :gwt_rpc, :jpa, :imit, :json], entity2.enabled_facets
168
168
  assert_equal [:jpa, :gwt, :gwt_rpc, :imit, :json], attribute1.enabled_facets
169
169
  assert_equal [:jpa, :gwt, :gwt_rpc, :imit, :json], attribute2.enabled_facets
170
+
171
+ attribute2.disable_facets_not_in(:json)
172
+
173
+ assert_equal [:json], attribute2.enabled_facets
174
+
175
+ attribute1.disable_facets_not_in([:imit])
176
+
177
+ assert_equal [:gwt, :gwt_rpc, :imit], attribute1.enabled_facets
178
+
179
+ entity2.disable_facets_not_in([:gwt_rpc, :jpa])
180
+
181
+ assert_equal [:gwt, :gwt_rpc, :jpa], entity2.enabled_facets
170
182
  end
171
183
 
172
184
  def test_extension_point
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reality-facets
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Donald