Skip to content

Commit 816f370

Browse files
committed
Add basic CMAB DecisionService spec
1 parent da64665 commit 816f370

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

spec/cmab_service_spec.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
require 'spec_helper'
2+
require 'optimizely/decision_service'
3+
require 'optimizely/logger'
4+
5+
describe 'CMAB DecisionService' do
6+
let(:logger) { Optimizely::SimpleLogger.new }
7+
let(:decision_service) { Optimizely::DecisionService.new(logger) }
8+
let(:experiment) do
9+
{
10+
'id' => '12345',
11+
'key' => 'cmab_experiment',
12+
'type' => 'cmab',
13+
'variations' => [
14+
{ 'id' => 'v1', 'key' => 'variation_1' },
15+
{ 'id' => 'v2', 'key' => 'variation_2' }
16+
]
17+
}
18+
end
19+
let(:project_config) { double('ProjectConfig', get_experiment_from_id: experiment) }
20+
let(:user_context) { double('UserContext', user_id: 'user_abc', user_attributes: {}) }
21+
22+
it 'returns a CMAB variation for a CMAB experiment' do
23+
variation_id, reasons = decision_service.get_variation(project_config, '12345', user_context)
24+
expect(['v1', 'v2']).to include(variation_id)
25+
expect(reasons.any? { |r| r.include?('CMAB decision') }).to be true
26+
end
27+
end

0 commit comments

Comments
 (0)