rb/spec/configuration_spec.rb (106 lines of code) (raw):
# Copyright 2018 Twitter, Inc.
# Licensed under the Apache License, Version 2.0
# http://www.apache.org/licenses/LICENSE-2.0
# encoding: utf-8
require File.dirname(__FILE__) + '/spec_helper'
describe Twitter::TwitterText::Configuration do
context "configuration" do
context "with invalid data" do
it "should raise an exception" do
invalid_hash = Twitter::TwitterText::Configuration.parse_string("{\"version\":2,\"maxWeightedTweetLength\":280,\"scale\":100,\"defaultWeight\":200,\"transformedURLLength\":23,\"ranges\":[{\"start\":0,\"end\":true,\"weight\":false},{\"start\":8192,\"end\":8205,\"weight\":100},{\"start\":8208,\"end\":8223,\"weight\":100},{\"start\":8242,\"end\":8247,\"weight\":100}]}")
expect { Twitter::TwitterText::Configuration.new(invalid_hash) }.to raise_error(ArgumentError)
end
end
context "with defaults" do
before do
Twitter::TwitterText::Configuration.default_configuration = Twitter::TwitterText::Configuration.configuration_from_file(Twitter::TwitterText::Configuration::CONFIG_V2)
end
it "should define version constants" do
expect(Twitter::TwitterText::Configuration.const_defined?(:CONFIG_V1)).to be true
expect(Twitter::TwitterText::Configuration.const_defined?(:CONFIG_V2)).to be true
expect(Twitter::TwitterText::Configuration.const_defined?(:CONFIG_V3)).to be true
end
it "should define a default configuration" do
expect(Twitter::TwitterText::Configuration.default_configuration).to_not be_nil
expect(Twitter::TwitterText::Configuration.default_configuration.version).to eq(2)
end
end
context "with v1 configuration" do
before do
@config = Twitter::TwitterText::Configuration.configuration_from_file(Twitter::TwitterText::Configuration::CONFIG_V1)
end
it "should have a version" do
expect(@config.version).to eq(1)
end
it "should have a max_weighted_tweet_length" do
expect(@config.max_weighted_tweet_length).to eq(140)
end
it "should have a scale" do
expect(@config.scale).to eq(1)
end
it "should have a default_weight" do
expect(@config.default_weight).to eq(1)
end
it "should have a transformed_url_length" do
expect(@config.transformed_url_length).to eq(23)
end
end
context "with v2 configuration" do
before do
@config = Twitter::TwitterText::Configuration.configuration_from_file(Twitter::TwitterText::Configuration::CONFIG_V2)
end
it "should have a version" do
expect(@config.version).to eq(2)
end
it "should have a max_weighted_tweet_length" do
expect(@config.max_weighted_tweet_length).to eq(280)
end
it "should have a scale" do
expect(@config.scale).to eq(100)
end
it "should have a default_weight" do
expect(@config.default_weight).to eq(200)
end
it "should have a transformed_url_length" do
expect(@config.transformed_url_length).to eq(23)
end
it "should have a configured range" do
expect(@config.ranges).to be_kind_of(Array)
expect(@config.ranges.count).to be > 0
expect(@config.ranges[0]).to be_kind_of(Twitter::TwitterText::WeightedRange)
weighted_range = @config.ranges[0]
expect(weighted_range.start).to be_kind_of(Integer)
expect(weighted_range.end).to be_kind_of(Integer)
expect(weighted_range.weight).to be_kind_of(Integer)
end
end
context "with v3 configuration" do
before do
@config = Twitter::TwitterText::Configuration.configuration_from_file(Twitter::TwitterText::Configuration::CONFIG_V3)
end
it "should have a version" do
expect(@config.version).to eq(3)
end
it "should have a max_weighted_tweet_length" do
expect(@config.max_weighted_tweet_length).to eq(280)
end
it "should have a scale" do
expect(@config.scale).to eq(100)
end
it "should have a default_weight" do
expect(@config.default_weight).to eq(200)
end
it "should have a transformed_url_length" do
expect(@config.transformed_url_length).to eq(23)
end
it "should have a configured range" do
expect(@config.ranges).to be_kind_of(Array)
expect(@config.ranges.count).to be > 0
expect(@config.ranges[0]).to be_kind_of(Twitter::TwitterText::WeightedRange)
weighted_range = @config.ranges[0]
expect(weighted_range.start).to be_kind_of(Integer)
expect(weighted_range.end).to be_kind_of(Integer)
expect(weighted_range.weight).to be_kind_of(Integer)
end
it "should support discounting emoji" do
expect(@config.emoji_parsing_enabled).to be true
end
end
end
end