mokkku 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/mokkku/mocked_object.rb +29 -0
- data/lib/mokkku/utils.rb +22 -0
- data/lib/mokkku/version.rb +9 -0
- data/lib/mokkku.rb +62 -0
- metadata +79 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: dea0bbaeb26c51558aa530f63a7a57ea1118d5d858c46b284b0aa0eefa43fe1c
|
4
|
+
data.tar.gz: 63c3ff3581a61bae6f77c9f20a11a56cd7bca662c4722f7284c8ac1523b0b4fb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: dc4da5ff3401d84a7c6340da54caa95a334fb548b7d33eb7194487492276c202c61bf17dc9eea471d982ea134076d5f821de7d4d23f248929cdbf67fb7a67369
|
7
|
+
data.tar.gz: a8a65b0ce61a7317d43261ec44e83a47344524c4226fa8f6d78d69f27544d703b0f8b501fbb6001765ff555aec60b27f1b34d637de1960cdc8fe697ce2902f76
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Mokkku
|
2
|
+
class MockedObject
|
3
|
+
def initialize(mocks)
|
4
|
+
@mocks = mocks
|
5
|
+
@selected_object = nil
|
6
|
+
end
|
7
|
+
|
8
|
+
def reset_context!
|
9
|
+
@selected_object = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def mocked_objects
|
15
|
+
@mocked_objects ||= @mocks.map do |mock_attrs|
|
16
|
+
Data.define(*mock_attrs.keys.map(&:to_sym)).new(**mock_attrs)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def method_missing(method_name, *args, &block)
|
21
|
+
if @selected_object.nil?
|
22
|
+
@selected_object = mocked_objects.sample(random: Mokkku::Random)
|
23
|
+
@selected_object.public_send(method_name)
|
24
|
+
else
|
25
|
+
@selected_object.public_send(method_name)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/mokkku/utils.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require_relative 'mocked_object'
|
3
|
+
|
4
|
+
module Mokkku
|
5
|
+
module Utils
|
6
|
+
def const_missing(const_name)
|
7
|
+
if const_name.match?(/\:\:/)
|
8
|
+
super(const_name)
|
9
|
+
else
|
10
|
+
mock_file_name = const_name.to_s.gsub(/([a-z\d])([A-Z])/, '\1_\2').downcase
|
11
|
+
mock_path = File.join(Mokkku.configuration.mocks_path, "#{mock_file_name}.yml")
|
12
|
+
data = File.read(mock_path)
|
13
|
+
parsed_data = YAML.safe_load(data, symbolize_names: true)
|
14
|
+
mocked_object = Mokkku::MockedObject.new(parsed_data)
|
15
|
+
|
16
|
+
const_set const_name, mocked_object
|
17
|
+
|
18
|
+
mocked_object
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/mokkku.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
require_relative 'mokkku/utils'
|
2
|
+
|
3
|
+
module Mokkku
|
4
|
+
extend Mokkku::Utils
|
5
|
+
|
6
|
+
class << self
|
7
|
+
attr_accessor :configuration
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.configure
|
11
|
+
self.configuration ||= Configuration.new
|
12
|
+
|
13
|
+
yield(configuration)
|
14
|
+
end
|
15
|
+
|
16
|
+
class Configuration
|
17
|
+
attr_accessor :mocks_path
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
@mocks_path = './spec/mocks'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Copied from FFaker gem - https://github.com/ffaker/ffaker
|
25
|
+
# Random Number Generator (RNG) used with ModuleUtils#fetch, #shuffle, #rand
|
26
|
+
# in order to provide deterministic repeatability.
|
27
|
+
module Random
|
28
|
+
# Returns the current RNG seed.
|
29
|
+
def self.seed
|
30
|
+
@seed ||= ::Random.new_seed
|
31
|
+
end
|
32
|
+
|
33
|
+
# Sets the RNG seed and creates a new internal RNG.
|
34
|
+
def self.seed=(new_seed)
|
35
|
+
@seed = new_seed
|
36
|
+
reset!
|
37
|
+
new_seed
|
38
|
+
end
|
39
|
+
|
40
|
+
# Reset the RNG back to its initial state.
|
41
|
+
def self.reset!
|
42
|
+
@rng = new_rng
|
43
|
+
end
|
44
|
+
|
45
|
+
# Returns a random number using an RNG with a known seed.
|
46
|
+
def self.rand(max = nil)
|
47
|
+
return rng.rand(max) if max
|
48
|
+
|
49
|
+
rng.rand
|
50
|
+
end
|
51
|
+
|
52
|
+
# Returns the current Random object.
|
53
|
+
def self.rng
|
54
|
+
@rng ||= new_rng
|
55
|
+
end
|
56
|
+
|
57
|
+
# Returns a new Random object instantiated with #seed.
|
58
|
+
def self.new_rng
|
59
|
+
::Random.new(seed)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mokkku
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Paweł Dąbrowski
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-08-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.7'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 3.7.0
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.7'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.7.0
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: pry
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
description: Generate mock data that is unique for your application
|
48
|
+
email: contact@paweldabrowski.com
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files: []
|
52
|
+
files:
|
53
|
+
- lib/mokkku.rb
|
54
|
+
- lib/mokkku/mocked_object.rb
|
55
|
+
- lib/mokkku/utils.rb
|
56
|
+
- lib/mokkku/version.rb
|
57
|
+
homepage:
|
58
|
+
licenses: []
|
59
|
+
metadata: {}
|
60
|
+
post_install_message:
|
61
|
+
rdoc_options: []
|
62
|
+
require_paths:
|
63
|
+
- lib
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
requirements: []
|
75
|
+
rubygems_version: 3.4.10
|
76
|
+
signing_key:
|
77
|
+
specification_version: 4
|
78
|
+
summary: Generate mock data that is unique for your application
|
79
|
+
test_files: []
|