super_stack 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/super_stack/manager.rb +17 -1
- data/lib/super_stack/version.rb +1 -1
- data/spec/manager_spec.rb +39 -11
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d7e71745423eac71f773457ba8d641c694b238b
|
4
|
+
data.tar.gz: 545f45196d81921479682642d7c292e283ab83f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 721a23e798806a3eada2ab1ca9bb002fb548115e4b47f1ad0c8a0df13a123c5effa13bfbcbd5f3e36c3ec9a0e8fa5ae3006c171f6171dfa48e5e3e4578219487
|
7
|
+
data.tar.gz: bc6b2e86889c0524fe31e0e97e7f32521fe9c89dacba1fc8317400b9867d8348f3b1c2e8f244f2af96119255a0c0486d90519cfc9011272398a5f388d29795f8
|
data/lib/super_stack/manager.rb
CHANGED
@@ -8,13 +8,29 @@ module SuperStack
|
|
8
8
|
DEFAULT_PRIORITY_INTERVAL = 10
|
9
9
|
DEFAULT_MERGE_POLICY = SuperStack::MergePolicies::StandardMergePolicy
|
10
10
|
|
11
|
-
attr_reader :layers
|
11
|
+
attr_reader :layers, :write_layer
|
12
12
|
|
13
13
|
def initialize
|
14
14
|
@layers = {}
|
15
15
|
self.default_merge_policy = DEFAULT_MERGE_POLICY
|
16
16
|
end
|
17
17
|
|
18
|
+
def write_layer=(layer_or_layer_name)
|
19
|
+
if layer_or_layer_name.is_a?(String) || layer_or_layer_name.is_a?(Symbol)
|
20
|
+
layer_name = layer_or_layer_name.to_s
|
21
|
+
raise 'Invalid write layer' unless layers.keys.include? layer_name
|
22
|
+
layer_or_layer_name = layers[layer_name]
|
23
|
+
end
|
24
|
+
# At that point layer_or_layer_name can only contain a layer object
|
25
|
+
raise 'Invalid write layer' unless layers.values.include? layer_or_layer_name
|
26
|
+
@write_layer = layer_or_layer_name
|
27
|
+
end
|
28
|
+
|
29
|
+
def []=(key,value)
|
30
|
+
raise 'No write layer specified' if write_layer.nil?
|
31
|
+
write_layer[key] = value
|
32
|
+
end
|
33
|
+
|
18
34
|
def [](filter=nil)
|
19
35
|
layers = to_a
|
20
36
|
return [] if layers.empty?
|
data/lib/super_stack/version.rb
CHANGED
data/spec/manager_spec.rb
CHANGED
@@ -68,19 +68,47 @@ describe SuperStack::Manager do
|
|
68
68
|
end
|
69
69
|
|
70
70
|
it 'should allow to reload all layers at once' do
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
71
|
+
subject.add_layer layer1
|
72
|
+
subject << {bar: :foo}
|
73
|
+
subject.add_layer layer3
|
74
|
+
subject.add_layer layer4
|
75
|
+
expect(subject[:foo] == :bar).to be_falsey
|
76
|
+
subject.layers['layer3'][:foo] = :bar
|
77
|
+
expect(subject[:foo] == :bar).to be_truthy
|
78
|
+
expect(subject[:bar] == :foo).to be_truthy
|
79
|
+
expect {subject.reload_layers}.not_to raise_error
|
80
|
+
expect(subject[:foo] == :bar).to be_falsey
|
81
|
+
expect(subject[:bar] == :foo).to be_truthy
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'should be possible to specify a write layer using its name or itself' do
|
85
|
+
override = SuperStack::Layer.new
|
86
|
+
override.name = :override
|
87
|
+
subject << override
|
88
|
+
subject << layer1
|
89
|
+
expect {subject.write_layer = :override}.not_to raise_error
|
90
|
+
expect {subject.write_layer = 'override'}.not_to raise_error
|
91
|
+
expect {subject.write_layer = override}.not_to raise_error
|
82
92
|
end
|
83
93
|
|
94
|
+
it 'should not be possible to modify if no write layer has been specified' do
|
95
|
+
subject << layer1
|
96
|
+
subject << layer2
|
97
|
+
expect {subject[:foo] = :bar}.to raise_error
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should push all modifications to the write layer' do
|
101
|
+
override = SuperStack::Layer.new
|
102
|
+
override.name = :override
|
103
|
+
subject << override
|
104
|
+
subject << layer1
|
105
|
+
subject.write_layer = override
|
106
|
+
expect {subject[:foo] = :bar}.not_to raise_error
|
107
|
+
expect(subject.layers['override'][:foo] == :bar).to be_truthy
|
108
|
+
expect(subject[:foo] == :bar).to be_truthy
|
109
|
+
end
|
110
|
+
|
111
|
+
|
84
112
|
|
85
113
|
SuperStack::MergePolicies.list.each do |policy|
|
86
114
|
it "should provide a merged view of the layers according to the merge policy: #{policy}" do
|