Class: FastlyNsq::Testing

Inherits:
Object
  • Object
show all
Defined in:
lib/fastly_nsq/testing.rb

Overview

FastlyNsq::Testing.disable! # do it live

FastlyNsq::Testing.enable!  # re-enable testing mode

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.__test_modeObject

Returns the value of attribute __test_mode.



39
40
41
# File 'lib/fastly_nsq/testing.rb', line 39

def __test_mode
  @__test_mode
end

Class Method Details

.__set_test_mode(mode) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/fastly_nsq/testing.rb', line 41

def __set_test_mode(mode)
  if block_given?
    current_mode = __test_mode
    begin
      self.__test_mode = mode
      yield
    ensure
      self.__test_mode = current_mode
    end
  else
    self.__test_mode = mode
  end
end

.disable!(&block) ⇒ Object



55
56
57
# File 'lib/fastly_nsq/testing.rb', line 55

def disable!(&block)
  __set_test_mode(:disable, &block)
end

.disabled?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/fastly_nsq/testing.rb', line 71

def disabled?
  __test_mode == :disable
end

.enabled?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/fastly_nsq/testing.rb', line 67

def enabled?
  __test_mode != :disable
end

.fake!(&block) ⇒ Object



59
60
61
# File 'lib/fastly_nsq/testing.rb', line 59

def fake!(&block)
  __set_test_mode(:fake, &block)
end

.fake?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'lib/fastly_nsq/testing.rb', line 75

def fake?
  __test_mode == :fake
end

.inline!(&block) ⇒ Object



63
64
65
# File 'lib/fastly_nsq/testing.rb', line 63

def inline!(&block)
  __set_test_mode(:inline, &block)
end

.inline?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/fastly_nsq/testing.rb', line 79

def inline?
  __test_mode == :inline
end

.message(data:, meta: nil) ⇒ Object

Creates a FastlyNsq::TestMessage that is used to create a FastlyNsq::Message where the underlying nsq_message is the TestMessage and not an Nsq::Message. This aids in testing application code that is doing message processing

Examples:

test_message = FastlyNsq::Testing.message(data: post_data, meta: {})
processor_klass.call(test_message)
expect(Post.find(post_data['id']).not_to be nil

Parameters:

  • data (String)

    NSQ message data

  • meta (String) (defaults to: nil)

    NSQ message metadata



100
101
102
103
# File 'lib/fastly_nsq/testing.rb', line 100

def message(data:, meta: nil)
  test_message = FastlyNsq::TestMessage.new(JSON.dump("data" => data, "meta" => meta))
  FastlyNsq::Message.new(test_message)
end

.reset!Object



83
84
85
86
# File 'lib/fastly_nsq/testing.rb', line 83

def reset!
  return unless enabled?
  FastlyNsq::Messages.messages.clear
end