30
30
let ( :event_dispatcher ) { Optimizely ::EventDispatcher . new }
31
31
let ( :notification_center ) { Optimizely ::NotificationCenter . new ( spy_logger , error_handler ) }
32
32
33
- describe '.default_instance' do
34
- it 'should take http config manager' do
35
- allow ( Optimizely ::HTTPProjectConfigManager ) . to receive ( :new )
36
-
37
- http_project_config_manager = Optimizely ::HTTPProjectConfigManager . new (
38
- sdk_key : 'sdk_key' ,
39
- datafile : datafile ,
40
- logger : spy_logger ,
41
- error_handler : error_handler ,
42
- skip_json_validation : false ,
43
- notification_center : notification_center
33
+ before ( :example ) do
34
+ WebMock . allow_net_connect!
35
+ stub_request ( :get , 'https://cdn.optimizely.com/datafiles/sdk_key.json' )
36
+ . with (
37
+ headers : {
38
+ 'Content-Type' => 'application/json'
39
+ }
44
40
)
41
+ . to_return ( status : 200 , body : '' , headers : { } )
42
+ end
43
+
44
+ describe '.default_instance' do
45
+ it 'should create http config manager when sdk_key is given' do
46
+ optimizely_instance = Optimizely ::OptimizelyFactory . default_instance ( 'sdk_key' , datafile )
47
+ expect ( optimizely_instance . config_manager ) . to be_instance_of ( Optimizely ::HTTPProjectConfigManager )
48
+ end
45
49
50
+ it 'should create http config manager when polling interval and blocking timeout are set' do
51
+ Optimizely ::OptimizelyFactory . polling_interval ( 40 )
52
+ Optimizely ::OptimizelyFactory . blocking_timeout ( 5 )
46
53
optimizely_instance = Optimizely ::OptimizelyFactory . default_instance ( 'sdk_key' , datafile )
47
54
48
- expect ( optimizely_instance . config_manager ) . to eq ( http_project_config_manager )
55
+ # Verify that values set in OptimizelyFactory are being used inside config manager.
56
+ expect ( optimizely_instance . config_manager . instance_variable_get ( :@polling_interval ) ) . to eq ( 40 )
57
+ expect ( optimizely_instance . config_manager . instance_variable_get ( :@blocking_timeout ) ) . to eq ( 5 )
58
+ end
59
+
60
+ it 'should create http config manager with the same components as the instance' do
61
+ optimizely_instance = Optimizely ::OptimizelyFactory . default_instance ( 'sdk_key' , datafile )
62
+ expect ( optimizely_instance . error_handler ) . to be ( optimizely_instance . config_manager . instance_variable_get ( :@error_handler ) )
63
+ expect ( optimizely_instance . logger ) . to be ( optimizely_instance . config_manager . instance_variable_get ( :@logger ) )
64
+ expect ( optimizely_instance . notification_center ) . to be ( optimizely_instance . config_manager . instance_variable_get ( :@notification_center ) )
49
65
end
50
66
end
51
67
@@ -57,61 +73,63 @@ class CustomConfigManager
57
73
58
74
custom_config_manager = CustomConfigManager . new
59
75
optimizely_instance = Optimizely ::OptimizelyFactory . default_instance_with_config_manager ( custom_config_manager )
60
- expect ( optimizely_instance . config_manager ) . to eq ( custom_config_manager )
76
+ expect ( optimizely_instance . config_manager ) . to be ( custom_config_manager )
61
77
end
62
78
end
63
79
64
80
describe '.custom_instance' do
65
- it 'should take http config manager when sdk key is given' do
66
- allow ( Optimizely ::HTTPProjectConfigManager ) . to receive ( :new )
67
- http_project_config_manager = Optimizely ::HTTPProjectConfigManager . new (
68
- sdk_key : 'sdk_key' ,
69
- datafile : datafile ,
70
- logger : spy_logger ,
71
- error_handler : error_handler ,
72
- skip_json_validation : false ,
73
- notification_center : notification_center
74
- )
75
-
81
+ it 'should take http config manager when sdk key, polling interval, blocking timeout are given' do
82
+ Optimizely ::OptimizelyFactory . polling_interval ( 50 )
83
+ Optimizely ::OptimizelyFactory . blocking_timeout ( 10 )
76
84
optimizely_instance = Optimizely ::OptimizelyFactory . custom_instance (
77
85
'sdk_key' ,
78
86
datafile ,
79
87
event_dispatcher ,
80
- spy_logger ,
88
+ Optimizely :: NoOpLogger . new ,
81
89
error_handler ,
82
90
false ,
83
91
user_profile_service ,
84
92
nil ,
85
93
notification_center
86
94
)
87
- expect ( optimizely_instance . config_manager ) . to eq ( http_project_config_manager )
95
+
96
+ # Verify that values set in OptimizelyFactory are being used inside config manager.
97
+ expect ( optimizely_instance . config_manager . instance_variable_get ( :@polling_interval ) ) . to eq ( 50 )
98
+ expect ( optimizely_instance . config_manager . instance_variable_get ( :@blocking_timeout ) ) . to eq ( 10 )
88
99
end
89
100
90
101
it 'should take event processor when flush interval and batch size are set' do
91
- Optimizely ::OptimizelyFactory . max_event_flush_interval ( 5 , spy_logger )
92
- Optimizely ::OptimizelyFactory . max_event_batch_size ( 100 , spy_logger )
93
-
94
- event_processor = Optimizely ::BatchEventProcessor . new (
95
- event_dispatcher : event_dispatcher ,
96
- batch_size : 100 ,
97
- flush_interval : 5 ,
98
- notification_center : notification_center
99
- )
102
+ Optimizely ::OptimizelyFactory . max_event_flush_interval ( 5 )
103
+ Optimizely ::OptimizelyFactory . max_event_batch_size ( 100 )
100
104
105
+ optimizely_instance = Optimizely ::OptimizelyFactory . custom_instance ( 'sdk_key' )
106
+
107
+ expect ( optimizely_instance . event_processor . flush_interval ) . to eq ( 5 )
108
+ expect ( optimizely_instance . event_processor . batch_size ) . to eq ( 100 )
109
+ optimizely_instance . close
110
+ end
111
+
112
+ it 'should assign passed components to both the instance and http manager' do
113
+ logger = Optimizely ::NoOpLogger . new
101
114
optimizely_instance = Optimizely ::OptimizelyFactory . custom_instance (
102
115
'sdk_key' ,
103
116
datafile ,
104
117
event_dispatcher ,
105
- spy_logger ,
118
+ logger ,
106
119
error_handler ,
107
120
false ,
108
121
user_profile_service ,
109
122
nil ,
110
123
notification_center
111
124
)
112
125
113
- expect ( optimizely_instance . event_processor ) . equal? event_processor
114
- optimizely_instance . close
126
+ expect ( error_handler ) . to be ( optimizely_instance . config_manager . instance_variable_get ( :@error_handler ) )
127
+ expect ( logger ) . to be ( optimizely_instance . config_manager . instance_variable_get ( :@logger ) )
128
+ expect ( notification_center ) . to be ( optimizely_instance . config_manager . instance_variable_get ( :@notification_center ) )
129
+
130
+ expect ( error_handler ) . to be ( optimizely_instance . error_handler )
131
+ expect ( logger ) . to be ( optimizely_instance . logger )
132
+ expect ( notification_center ) . to be ( optimizely_instance . notification_center )
115
133
end
116
134
end
117
135
0 commit comments