File: fakes_classes.rb

package info (click to toggle)
ruby-bogus 0.1.5-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 828 kB
  • ctags: 628
  • sloc: ruby: 4,124; makefile: 6; sh: 2
file content (21 lines) | stat: -rw-r--r-- 603 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module Bogus
  class FakesClasses
    extend Takes

    takes :creates_fakes_with_stubbed_methods, :overwrites_classes, :overwritten_classes

    def fake(klass, opts = {})
      opts = opts.merge(as: :class)
      name = opts.delete(:fake_name) || underscore(klass.name.split('::').last).to_sym
      fake = creates_fakes_with_stubbed_methods.create(name, opts) { klass }
      overwrites_classes.overwrite(klass.name, fake)
      overwritten_classes.add(klass.name, klass)
    end

    private

    def underscore(str)
      str.gsub(/[A-Z]/) { |s| "_" + s.downcase }.gsub(/^_/, '')
    end
  end
end