spec/logger_spec.rb in act-fluent-logger-rails-0.1.5 vs spec/logger_spec.rb in act-fluent-logger-rails-0.1.6
- old
+ new
@@ -2,17 +2,15 @@
require 'tempfile'
describe ActFluentLoggerRails::Logger do
before do
+ Rails = double("Rails") unless self.class.const_defined?(:Rails)
+ Rails.stub(env: "test")
+ Rails.stub_chain(:application, :config, :log_level).and_return(:debug)
+ Rails.stub_chain(:application, :config, :log_tags=)
- unless self.class.const_defined?(:Rails)
- Rails = double("Rails", env: "test")
- Rails.stub_chain(:application, :config, :log_level).and_return(:debug)
- Rails.stub_chain(:application, :config, :log_tags=)
- end
-
class MyLogger
attr_accessor :log
def post(tag, map)
@log ||= []
@log << [tag, map.merge(messages: map[:messages].dup)]
@@ -44,28 +42,50 @@
uuid: :uuid,
foo: ->(request) { request.foo }
})
}
- it 'info' do
- request = double('request', uuid: 'uuid_value', foo: 'foo_value')
- logger[:abc] = 'xyz'
- logger.tagged([request]) { logger.info('hello') }
- expect(@my_logger.log).to eq([['foo', {
- abc: 'xyz',
- messages: ['hello'],
- level: 'INFO',
- uuid: 'uuid_value',
- foo: 'foo_value'
- } ]])
- @my_logger.clear
- logger.tagged([request]) { logger.info('world'); logger.info('bye') }
- expect(@my_logger.log).to eq([['foo', {
- messages: ['world', 'bye'],
- level: 'INFO',
- uuid: 'uuid_value',
- foo: 'foo_value'
- } ]])
+ let(:request) {
+ double('request', uuid: 'uuid_value', foo: 'foo_value')
+ }
+
+ describe 'logging' do
+
+ describe 'basic' do
+ it 'info' do
+ logger[:abc] = 'xyz'
+ logger.tagged([request]) { logger.info('hello') }
+ expect(@my_logger.log).to eq([['foo', {
+ abc: 'xyz',
+ messages: ['hello'],
+ level: 'INFO',
+ uuid: 'uuid_value',
+ foo: 'foo_value'
+ } ]])
+ @my_logger.clear
+ logger.tagged([request]) { logger.info('world'); logger.info('bye') }
+ expect(@my_logger.log).to eq([['foo', {
+ messages: ['world', 'bye'],
+ level: 'INFO',
+ uuid: 'uuid_value',
+ foo: 'foo_value'
+ } ]])
+ end
+ end
+
+ describe 'frozen ascii-8bit string' do
+ it 'join messages' do
+ logger.instance_variable_set(:@messages_type, :string)
+ ascii = "\xe8\x8a\xb1".force_encoding('ascii-8bit').freeze
+ logger.tagged([request]) {
+ logger.info(ascii)
+ logger.info('咲く')
+ }
+ expect(@my_logger.log[0][1][:messages]).to eq("花\n咲く")
+ expect(ascii.encoding).to eq(Encoding::ASCII_8BIT)
+ end
+ end
+
end
describe "use ENV['FLUENTD_URL']" do
let(:fluentd_url) { "http://fluentd.example.com:42442/hoge?messages_type=string" }