pulse_meter_visualizer 0.4.20 → 0.4.21
Sign up to get free protection for your applications and to get access to all the features.
- data/pulse_meter_visualizer.gemspec +2 -2
- data/spec/pulse_meter/visualize/app_spec.rb +3 -3
- data/spec/pulse_meter/visualize/dsl/layout_spec.rb +19 -19
- data/spec/pulse_meter/visualize/dsl/page_spec.rb +18 -18
- data/spec/pulse_meter/visualize/dsl/sensor_spec.rb +6 -6
- data/spec/pulse_meter/visualize/dsl/widgets/area_spec.rb +10 -10
- data/spec/pulse_meter/visualize/dsl/widgets/gauge_spec.rb +3 -3
- data/spec/pulse_meter/visualize/dsl/widgets/line_spec.rb +10 -10
- data/spec/pulse_meter/visualize/dsl/widgets/pie_spec.rb +7 -7
- data/spec/pulse_meter/visualize/dsl/widgets/table_spec.rb +8 -8
- data/spec/pulse_meter/visualize/layout_spec.rb +11 -11
- data/spec/pulse_meter/visualize/page_spec.rb +17 -13
- data/spec/pulse_meter/visualize/sensor_spec.rb +24 -24
- data/spec/pulse_meter/visualize/series_extractor_spec.rb +15 -15
- data/spec/pulse_meter/visualize/widgets/gauge_spec.rb +9 -9
- data/spec/pulse_meter/visualize/widgets/pie_spec.rb +9 -8
- data/spec/pulse_meter/visualizer_spec.rb +3 -3
- data/spec/shared_examples/dsl_widget.rb +30 -30
- data/spec/shared_examples/widget.rb +16 -15
- metadata +54 -9
- checksums.yaml +0 -15
@@ -57,16 +57,16 @@ describe PulseMeter::Visualize::Page do
|
|
57
57
|
|
58
58
|
describe "#widget_data" do
|
59
59
|
|
60
|
-
it "
|
60
|
+
it "generates correct data of single widget" do
|
61
61
|
Timecop.freeze(interval_start + 2 * interval - 1) do
|
62
|
-
page.widget_data(0)[:id].
|
63
|
-
page.widget_data(1)[:id].
|
62
|
+
expect(page.widget_data(0)[:id]).to eq(1)
|
63
|
+
expect(page.widget_data(1)[:id]).to eq(2)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
it "
|
67
|
+
it "generates correct data of single widget" do
|
68
68
|
Timecop.freeze(interval_start + 2 * interval - 1) do
|
69
|
-
page.widget_data(0)[:series].
|
69
|
+
expect(page.widget_data(0)[:series]).to eq(
|
70
70
|
{
|
71
71
|
data: [
|
72
72
|
[a_sensor.annotation, 12],
|
@@ -77,7 +77,8 @@ describe PulseMeter::Visualize::Page do
|
|
77
77
|
{color: b_color}
|
78
78
|
]
|
79
79
|
}
|
80
|
-
|
80
|
+
)
|
81
|
+
expect(page.widget_data(1)[:series]).to eq(
|
81
82
|
{
|
82
83
|
titles: [a_sensor.annotation, b_sensor.annotation],
|
83
84
|
rows: [[interval_start.to_i * 1000, 12, 33]],
|
@@ -86,10 +87,11 @@ describe PulseMeter::Visualize::Page do
|
|
86
87
|
{color: b_color}
|
87
88
|
]
|
88
89
|
}
|
90
|
+
)
|
89
91
|
end
|
90
92
|
|
91
93
|
Timecop.freeze(interval_start + 2 * interval - 1) do
|
92
|
-
page.widget_data(0, timespan: 0)[:series].
|
94
|
+
expect(page.widget_data(0, timespan: 0)[:series]).to eq(
|
93
95
|
{
|
94
96
|
data: [
|
95
97
|
[a_sensor.annotation, 12],
|
@@ -100,7 +102,8 @@ describe PulseMeter::Visualize::Page do
|
|
100
102
|
{color: b_color}
|
101
103
|
]
|
102
104
|
}
|
103
|
-
|
105
|
+
)
|
106
|
+
expect(page.widget_data(1, timespan: 1)[:series]).to eq(
|
104
107
|
{
|
105
108
|
titles: [a_sensor.annotation, b_sensor.annotation],
|
106
109
|
rows: [],
|
@@ -109,6 +112,7 @@ describe PulseMeter::Visualize::Page do
|
|
109
112
|
{color: b_color}
|
110
113
|
]
|
111
114
|
}
|
115
|
+
)
|
112
116
|
|
113
117
|
end
|
114
118
|
|
@@ -117,16 +121,16 @@ describe PulseMeter::Visualize::Page do
|
|
117
121
|
end
|
118
122
|
|
119
123
|
describe "#widget_datas" do
|
120
|
-
it "
|
124
|
+
it "generates correct ids for all widgets" do
|
121
125
|
Timecop.freeze(interval_start + 2 * interval - 1) do
|
122
|
-
page.widget_datas.map{|h| h[:id]}.
|
126
|
+
expect(page.widget_datas.map{|h| h[:id]}).to eq([1,2])
|
123
127
|
end
|
124
128
|
end
|
125
129
|
|
126
|
-
it "
|
130
|
+
it "generates correct series data of all widgets" do
|
127
131
|
Timecop.freeze(interval_start + 2 * interval - 1) do
|
128
132
|
|
129
|
-
page.widget_datas.map{|h| h[:series]}.
|
133
|
+
expect(page.widget_datas.map{|h| h[:series]}).to eq([
|
130
134
|
{
|
131
135
|
data: [
|
132
136
|
[a_sensor.annotation, 12],
|
@@ -145,7 +149,7 @@ describe PulseMeter::Visualize::Page do
|
|
145
149
|
{color: b_color}
|
146
150
|
]
|
147
151
|
}
|
148
|
-
]
|
152
|
+
])
|
149
153
|
end
|
150
154
|
|
151
155
|
end
|
@@ -15,40 +15,40 @@ describe PulseMeter::Visualize::Sensor do
|
|
15
15
|
|
16
16
|
describe '#last_value' do
|
17
17
|
context "when sensor does not exist" do
|
18
|
-
it "
|
18
|
+
it "raises RestoreError" do
|
19
19
|
expect{ bad_sensor.last_value(Time.now) }.to raise_exception(PulseMeter::RestoreError)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
|
24
24
|
context "when sensor has no data" do
|
25
|
-
it "
|
26
|
-
sensor.last_value(Time.now).
|
25
|
+
it "returns nil" do
|
26
|
+
expect(sensor.last_value(Time.now)).to be_nil
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
context "when sensor has data" do
|
31
31
|
context "when need_incomplete arg is true" do
|
32
|
-
it "
|
32
|
+
it "returns last value" do
|
33
33
|
Timecop.freeze(interval_start) do
|
34
34
|
real_sensor.event(101)
|
35
35
|
end
|
36
36
|
Timecop.freeze(interval_start+1) do
|
37
|
-
sensor.last_value(Time.now, true).
|
37
|
+
expect(sensor.last_value(Time.now, true)).to eq(101)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
42
|
context "when need_incomplete arg is false" do
|
43
|
-
it "
|
43
|
+
it "returns last complete value" do
|
44
44
|
Timecop.freeze(interval_start) do
|
45
45
|
real_sensor.event(101)
|
46
46
|
end
|
47
47
|
Timecop.freeze(interval_start + 1) do
|
48
|
-
sensor.last_value(Time.now).
|
48
|
+
expect(sensor.last_value(Time.now)).to be_nil
|
49
49
|
end
|
50
50
|
Timecop.freeze(interval_start + interval + 1) do
|
51
|
-
sensor.last_value(Time.now).
|
51
|
+
expect(sensor.last_value(Time.now)).to eq(101)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -59,20 +59,20 @@ describe PulseMeter::Visualize::Sensor do
|
|
59
59
|
describe "#last_point_data" do
|
60
60
|
|
61
61
|
context "when sensor does not exist" do
|
62
|
-
it "
|
62
|
+
it "raises RestoreError" do
|
63
63
|
expect{ bad_sensor.last_point_data(Time.now) }.to raise_exception(PulseMeter::RestoreError)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
it "
|
67
|
+
it "returns last value with annotation (and color)" do
|
68
68
|
Timecop.freeze(interval_start) do
|
69
69
|
real_sensor.event(101)
|
70
70
|
end
|
71
71
|
Timecop.freeze(interval_start + 1) do
|
72
|
-
sensor.last_point_data(Time.now, true).
|
73
|
-
sensor.last_point_data(Time.now).
|
74
|
-
sensor_with_color.last_point_data(Time.now, true).
|
75
|
-
sensor_with_color.last_point_data(Time.now).
|
72
|
+
expect(sensor.last_point_data(Time.now, true)).to eq([{name: annotation, y: 101}])
|
73
|
+
expect(sensor.last_point_data(Time.now)).to eq([{name: annotation, y: nil}])
|
74
|
+
expect(sensor_with_color.last_point_data(Time.now, true)).to eq([{name: annotation, y: 101, color: color}])
|
75
|
+
expect(sensor_with_color.last_point_data(Time.now)).to eq([{name: annotation, y: nil, color: color}])
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
@@ -81,11 +81,11 @@ describe PulseMeter::Visualize::Sensor do
|
|
81
81
|
subject{ checked_sensor.valid? }
|
82
82
|
context "when sensor exists" do
|
83
83
|
let(:checked_sensor){ sensor }
|
84
|
-
it{
|
84
|
+
it{ is_expected.to eq(true) }
|
85
85
|
end
|
86
86
|
context "when sensor does not exist" do
|
87
87
|
let(:checked_sensor){ bad_sensor }
|
88
|
-
it{
|
88
|
+
it{ is_expected.to eq(false) }
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
@@ -100,30 +100,30 @@ describe PulseMeter::Visualize::Sensor do
|
|
100
100
|
end
|
101
101
|
|
102
102
|
context "when sensor does not exist" do
|
103
|
-
it "
|
103
|
+
it "raises RestoreError" do
|
104
104
|
expect{ bad_sensor.timeline_data(Time.now - interval, Time.now) }.to raise_exception(PulseMeter::RestoreError)
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
108
108
|
|
109
109
|
describe "returned value" do
|
110
|
-
it "
|
110
|
+
it "contains sensor annotation" do
|
111
111
|
Timecop.freeze(interval_start + interval + 1) do
|
112
|
-
sensor.timeline_data(Time.now - interval, Time.now).first[:name].
|
112
|
+
expect(sensor.timeline_data(Time.now - interval, Time.now).first[:name]).to eq(annotation)
|
113
113
|
end
|
114
114
|
end
|
115
|
-
it "
|
115
|
+
it "contains sensor color" do
|
116
116
|
Timecop.freeze(interval_start + interval + 1) do
|
117
|
-
sensor_with_color.timeline_data(Time.now - interval, Time.now).first[:color].
|
117
|
+
expect(sensor_with_color.timeline_data(Time.now - interval, Time.now).first[:color]).to eq(color)
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
121
|
-
it "
|
121
|
+
it "contains [interval_start, value] pairs for each interval" do
|
122
122
|
Timecop.freeze(interval_start + interval + 1) do
|
123
123
|
data = sensor.timeline_data(Time.now - interval * 2, Time.now)
|
124
|
-
data.first[:data].
|
124
|
+
expect(data.first[:data]).to eq([{x: interval_start.to_i * 1000, y: 101}])
|
125
125
|
data = sensor.timeline_data(Time.now - interval * 2, Time.now, true)
|
126
|
-
data.first[:data].
|
126
|
+
expect(data.first[:data]).to eq([{x: interval_start.to_i * 1000, y: 101}, {x: (interval_start + interval).to_i * 1000, y: 55}])
|
127
127
|
end
|
128
128
|
end
|
129
129
|
end
|
@@ -20,23 +20,23 @@ describe PulseMeter::Visualize::SeriesExtractor do
|
|
20
20
|
|
21
21
|
let(:extractor) {PulseMeter::Visualize.extractor(simple_sensor)}
|
22
22
|
|
23
|
-
it "
|
24
|
-
extractor.
|
23
|
+
it "is created for simple sensors" do
|
24
|
+
expect(extractor).to be_kind_of(PulseMeter::Visualize::SeriesExtractor::Simple)
|
25
25
|
end
|
26
26
|
|
27
|
-
it "
|
28
|
-
extractor.point_data(123).
|
27
|
+
it "creates point data correctly" do
|
28
|
+
expect(extractor.point_data(123)).to eq([{y: 123, name: 'simple sensor'}])
|
29
29
|
end
|
30
30
|
|
31
|
-
it "
|
31
|
+
it "creates timeline data correctly" do
|
32
32
|
tl_data = [
|
33
33
|
PulseMeter::SensorData.new(Time.at(1), 11),
|
34
34
|
PulseMeter::SensorData.new(Time.at(2), "22")
|
35
35
|
]
|
36
|
-
extractor.series_data(tl_data).
|
36
|
+
expect(extractor.series_data(tl_data)).to eq([{
|
37
37
|
name: 'simple sensor',
|
38
38
|
data: [{x: 1000, y: 11}, {x: 2000, y: 22}]
|
39
|
-
}]
|
39
|
+
}])
|
40
40
|
end
|
41
41
|
|
42
42
|
end
|
@@ -44,23 +44,23 @@ describe PulseMeter::Visualize::SeriesExtractor do
|
|
44
44
|
describe "hash extractor" do
|
45
45
|
let(:extractor) {PulseMeter::Visualize.extractor(hashed_sensor)}
|
46
46
|
|
47
|
-
it "
|
48
|
-
extractor.
|
47
|
+
it "is created for hash sensors" do
|
48
|
+
expect(extractor).to be_kind_of(PulseMeter::Visualize::SeriesExtractor::Hashed)
|
49
49
|
end
|
50
50
|
|
51
|
-
it "
|
52
|
-
extractor.point_data('{"x": 123, "y": 321}').
|
51
|
+
it "creates point data correctly" do
|
52
|
+
expect(extractor.point_data('{"x": 123, "y": 321}')).to eq([
|
53
53
|
{y: 123, name: 'hashed sensor: x'},
|
54
54
|
{y: 321, name: 'hashed sensor: y'}
|
55
|
-
]
|
55
|
+
])
|
56
56
|
end
|
57
57
|
|
58
|
-
it "
|
58
|
+
it "creates timeline data correctly" do
|
59
59
|
tl_data = [
|
60
60
|
PulseMeter::SensorData.new(Time.at(1), {"a" => 5, "b" => 6}),
|
61
61
|
PulseMeter::SensorData.new(Time.at(2), '{"c": 7, "b": 6}')
|
62
62
|
]
|
63
|
-
extractor.series_data(tl_data).
|
63
|
+
expect(extractor.series_data(tl_data)).to eq([
|
64
64
|
{
|
65
65
|
name: 'hashed sensor: a',
|
66
66
|
data: [{x: 1000, y: 5}, {x: 2000, y: nil}]
|
@@ -73,7 +73,7 @@ describe PulseMeter::Visualize::SeriesExtractor do
|
|
73
73
|
name: 'hashed sensor: c',
|
74
74
|
data: [{x: 1000, y: nil}, {x: 2000, y: 7}]
|
75
75
|
}
|
76
|
-
]
|
76
|
+
])
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
@@ -26,13 +26,13 @@ describe PulseMeter::Visualize::Widgets::Gauge do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
describe "#data" do
|
29
|
-
it "
|
29
|
+
it "contains type, title, redraw_interval, width, gchart_options attriutes" do
|
30
30
|
wdata = widget.data
|
31
|
-
wdata[:type].
|
32
|
-
wdata[:title].
|
33
|
-
wdata[:redraw_interval].
|
34
|
-
wdata[:width].
|
35
|
-
wdata[:gchart_options].
|
31
|
+
expect(wdata[:type]).to eq('gauge')
|
32
|
+
expect(wdata[:title]).to eq(widget_name)
|
33
|
+
expect(wdata[:redraw_interval]).to eq(redraw_interval)
|
34
|
+
expect(wdata[:width]).to eq(width)
|
35
|
+
expect(wdata[:gchart_options]).to eq({a: 1})
|
36
36
|
end
|
37
37
|
|
38
38
|
describe "series attribute" do
|
@@ -43,14 +43,14 @@ describe PulseMeter::Visualize::Widgets::Gauge do
|
|
43
43
|
c_sensor.event(:b => 55)
|
44
44
|
end
|
45
45
|
|
46
|
-
it "
|
46
|
+
it "contains valid gauge slices" do
|
47
47
|
|
48
|
-
widget.data[:series].sort.
|
48
|
+
expect(widget.data[:series].sort).to eq([
|
49
49
|
['A', 12],
|
50
50
|
['B', 33],
|
51
51
|
["C: a", 44],
|
52
52
|
["C: b", 55]
|
53
|
-
].sort
|
53
|
+
].sort)
|
54
54
|
|
55
55
|
end
|
56
56
|
|
@@ -26,13 +26,13 @@ describe PulseMeter::Visualize::Widgets::Pie do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
describe "#data" do
|
29
|
-
it "
|
29
|
+
it "contains type, title, redraw_interval, width, gchart_options attriutes" do
|
30
30
|
wdata = widget.data
|
31
|
-
wdata[:type].
|
32
|
-
wdata[:title].
|
33
|
-
wdata[:redraw_interval].
|
34
|
-
wdata[:width].
|
35
|
-
wdata[:gchart_options].
|
31
|
+
expect(wdata[:type]).to eq('pie')
|
32
|
+
expect(wdata[:title]).to eq(widget_name)
|
33
|
+
expect(wdata[:redraw_interval]).to eq(redraw_interval)
|
34
|
+
expect(wdata[:width]).to eq(width)
|
35
|
+
expect(wdata[:gchart_options]).to eq({a: 1})
|
36
36
|
end
|
37
37
|
|
38
38
|
describe "series attribute" do
|
@@ -47,10 +47,10 @@ describe PulseMeter::Visualize::Widgets::Pie do
|
|
47
47
|
@current_time = interval_start + 2 * interval - 1
|
48
48
|
end
|
49
49
|
|
50
|
-
it "
|
50
|
+
it "contains valid pie slices" do
|
51
51
|
|
52
52
|
Timecop.freeze(@current_time) do
|
53
|
-
widget.data[:series].
|
53
|
+
expect(widget.data[:series]).to eq(
|
54
54
|
{
|
55
55
|
data: [
|
56
56
|
[a_sensor.annotation, 12],
|
@@ -61,6 +61,7 @@ describe PulseMeter::Visualize::Widgets::Pie do
|
|
61
61
|
{color: b_color}
|
62
62
|
]
|
63
63
|
}
|
64
|
+
)
|
64
65
|
end
|
65
66
|
|
66
67
|
end
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe PulseMeter::Visualizer do
|
4
4
|
describe "::draw" do
|
5
|
-
it "
|
5
|
+
it "generates correct layout with passed block" do
|
6
6
|
layout = described_class.draw do |l|
|
7
7
|
|
8
8
|
l.title "My Gauges"
|
@@ -26,7 +26,7 @@ describe PulseMeter::Visualizer do
|
|
26
26
|
p.line :rph_total, sensor: :rph_total
|
27
27
|
p.line :rph_main_page, sensor: :rph_main_page
|
28
28
|
p.line :request_time_p95_hour
|
29
|
-
|
29
|
+
|
30
30
|
p.pie :success_vs_fail_total_hourly do |w|
|
31
31
|
w.sensor :success_total_hourly
|
32
32
|
w.sensor :fail_total_hourly
|
@@ -35,7 +35,7 @@ describe PulseMeter::Visualizer do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
end
|
38
|
-
layout.
|
38
|
+
expect(layout).to be_kind_of(PulseMeter::Visualize::Layout)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
@@ -8,33 +8,33 @@ shared_examples_for "dsl widget" do
|
|
8
8
|
let(:w){ described_class.new(widget_name) }
|
9
9
|
|
10
10
|
describe '.new' do
|
11
|
-
it "
|
11
|
+
it "sets default value for width papram" do
|
12
12
|
wid = w.to_data
|
13
|
-
wid.width.
|
13
|
+
expect(wid.width).to eq(PulseMeter::Visualize::DSL::Widget::MAX_WIDTH)
|
14
14
|
end
|
15
15
|
|
16
|
-
it "
|
16
|
+
it "sets title param from .new argument" do
|
17
17
|
wid = w.to_data
|
18
|
-
wid.title.
|
18
|
+
expect(wid.title).to eq(widget_name)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
describe "#process_args" do
|
23
|
-
it "
|
23
|
+
it "sets sensor by :sensor param" do
|
24
24
|
w.process_args :sensor => :some_sensor
|
25
25
|
sensors = w.to_data.sensors
|
26
|
-
sensors.size.
|
27
|
-
sensors.first.name.to_s.
|
26
|
+
expect(sensors.size).to eq(1)
|
27
|
+
expect(sensors.first.name.to_s).to eq('some_sensor')
|
28
28
|
end
|
29
29
|
|
30
|
-
it "
|
30
|
+
it "sets title by :title param" do
|
31
31
|
w.process_args :title => 'Title XXX'
|
32
|
-
w.to_data.title.
|
32
|
+
expect(w.to_data.title).to eq('Title XXX')
|
33
33
|
end
|
34
34
|
|
35
|
-
it "
|
35
|
+
it "sets width by :width param" do
|
36
36
|
w.process_args :width => 5
|
37
|
-
w.to_data.width.
|
37
|
+
expect(w.to_data.width).to eq(5)
|
38
38
|
end
|
39
39
|
|
40
40
|
end
|
@@ -44,66 +44,66 @@ shared_examples_for "dsl widget" do
|
|
44
44
|
let!(:s2){ PulseMeter::Sensor::Timelined::Max.new('s2', :ttl => 1000, :interval => interval) }
|
45
45
|
|
46
46
|
|
47
|
-
it "
|
47
|
+
it "adds sensor" do
|
48
48
|
w.sensor :s1
|
49
49
|
w.sensor :s2
|
50
50
|
sensors = w.to_data.sensors
|
51
|
-
sensors.size.
|
52
|
-
sensors.first.name.to_s.
|
53
|
-
sensors.last.name.to_s.
|
51
|
+
expect(sensors.size).to eq(2)
|
52
|
+
expect(sensors.first.name.to_s).to eq('s1')
|
53
|
+
expect(sensors.last.name.to_s).to eq('s2')
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
57
|
describe "#title" do
|
58
|
-
it "
|
58
|
+
it "sets title" do
|
59
59
|
w.title 'Title XXX'
|
60
|
-
w.to_data.title.
|
60
|
+
expect(w.to_data.title).to eq('Title XXX')
|
61
61
|
w.title 'Title YYY'
|
62
|
-
w.to_data.title.
|
62
|
+
expect(w.to_data.title).to eq('Title YYY')
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
66
|
describe "#width" do
|
67
|
-
it "
|
67
|
+
it "sets width" do
|
68
68
|
w.width 6
|
69
|
-
w.to_data.width.
|
69
|
+
expect(w.to_data.width).to eq(6)
|
70
70
|
end
|
71
71
|
|
72
|
-
it "
|
72
|
+
it "raises exception if width is invalid" do
|
73
73
|
expect { w.width -1 }.to raise_exception(PulseMeter::Visualize::DSL::BadWidgetWidth)
|
74
74
|
expect { w.width 13 }.to raise_exception(PulseMeter::Visualize::DSL::BadWidgetWidth)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
78
|
describe "#redraw_interval" do
|
79
|
-
it "
|
79
|
+
it "sets redraw_interval" do
|
80
80
|
w.redraw_interval 5
|
81
|
-
w.to_data.redraw_interval.
|
81
|
+
expect(w.to_data.redraw_interval).to eq(5)
|
82
82
|
end
|
83
|
-
it "
|
83
|
+
it "raises exception if redraw_interval is negative" do
|
84
84
|
expect{ w.redraw_interval(-1) }.to raise_exception(PulseMeter::Visualize::DSL::BadWidgetRedrawInterval)
|
85
85
|
end
|
86
86
|
|
87
87
|
end
|
88
88
|
|
89
89
|
describe "#to_data" do
|
90
|
-
it "
|
91
|
-
w.to_data.
|
90
|
+
it "converts dsl data to widget" do
|
91
|
+
expect(w.to_data).to be_kind_of(PulseMeter::Visualize::Widget)
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
95
|
describe "#gchart_options" do
|
96
|
-
it "
|
96
|
+
it "adds options to gchart_options hash" do
|
97
97
|
w.gchart_options a: 1
|
98
98
|
w.gchart_options b: 2
|
99
|
-
w.to_data.gchart_options.
|
99
|
+
expect(w.to_data.gchart_options).to eq({a: 1, b: 2})
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
103
|
describe "any anknown method" do
|
104
|
-
it "
|
104
|
+
it "adds options to gchart_options hash" do
|
105
105
|
w.foobar 123
|
106
|
-
w.to_data.gchart_options.
|
106
|
+
expect(w.to_data.gchart_options).to eq({foobar: 123})
|
107
107
|
end
|
108
108
|
end
|
109
109
|
end
|