mokkku 0.0.8 → 0.1.0
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 +4 -4
- data/lib/mokkku/mocked_object.rb +6 -7
- data/lib/mokkku/uniq_utils.rb +61 -0
- data/lib/mokkku/utils.rb +5 -3
- data/lib/mokkku/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4cd54dda1bd58c2eb99881690a02c99b7962c018bdf07132122d5240d6885c2f
|
|
4
|
+
data.tar.gz: 5c61996856695c6f53b8015eaa9c7923bf48a067969e8a9f4337db82cfc58b54
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 15a72e5e0e60cb7a2ef7b9febcc3dc17dfa01d3393358ee4a147654e2e915eafee3c7d55a9fb174b83433d2e724117fa79c4f33ca23d89d7be4b731b2ed2f0dc
|
|
7
|
+
data.tar.gz: 76acb0e6fba9015ee604d9f19eaf9834ef66c8d1a752cade074753f4d7d69f19f2f783e1d7846a2c81beb4c9cab4f93a9aa7d44d6b8017440af5141c33775d6d
|
data/lib/mokkku/mocked_object.rb
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
module Mokkku
|
|
2
2
|
class MockedObject
|
|
3
|
-
|
|
3
|
+
attr_reader :mocked_class
|
|
4
|
+
attr_accessor :selected_object
|
|
5
|
+
|
|
6
|
+
def initialize(mocked_class, mocks)
|
|
7
|
+
@mocked_class = mocked_class
|
|
4
8
|
@mocks = mocks
|
|
5
9
|
@selected_object = nil
|
|
6
10
|
end
|
|
@@ -18,12 +22,7 @@ module Mokkku
|
|
|
18
22
|
end
|
|
19
23
|
|
|
20
24
|
def method_missing(method_name, *args, &block)
|
|
21
|
-
|
|
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
|
|
25
|
+
@selected_object.public_send(method_name)
|
|
27
26
|
end
|
|
28
27
|
end
|
|
29
28
|
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require 'set'
|
|
2
|
+
|
|
3
|
+
module Mokkku
|
|
4
|
+
class UniqueUtils
|
|
5
|
+
RetryLimitExceeded = Class.new(StandardError)
|
|
6
|
+
|
|
7
|
+
class << self
|
|
8
|
+
def add_instance(generator, max_retries)
|
|
9
|
+
instances[generator.mocked_class] ||= Mokkku::UniqueUtils.new(generator, max_retries)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def instances
|
|
13
|
+
Thread.current[:mokkku_unique_utils] ||= {}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def clear
|
|
17
|
+
instances.each_value(&:clear)
|
|
18
|
+
instances.clear
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def initialize(generator, max_retries)
|
|
23
|
+
@generator = generator
|
|
24
|
+
@max_retries = max_retries
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def clear
|
|
28
|
+
previous_results.clear
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def method_missing(name, *args, **kwargs)
|
|
34
|
+
if @generator.selected_object.nil? && @generator.send(:mocked_objects).first.to_h.keys.include?(name)
|
|
35
|
+
@max_retries.times do
|
|
36
|
+
next_object = @generator.send(:mocked_objects).sample(random: Mokkku::Random)
|
|
37
|
+
|
|
38
|
+
next if previous_results.include?(next_object)
|
|
39
|
+
|
|
40
|
+
previous_results << next_object
|
|
41
|
+
@generator.instance_variable_set(:@selected_object, next_object)
|
|
42
|
+
break
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
if @generator.selected_object.nil?
|
|
46
|
+
raise RetryLimitExceeded, "Retry limit exceeded for #{name}"
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
@generator.public_send(name, *args, **kwargs)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def respond_to_missing?(name, *args)
|
|
54
|
+
@generator.respond_to?(name, *args) || super
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def previous_results
|
|
58
|
+
@previous_results ||= Set.new
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
data/lib/mokkku/utils.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'yaml'
|
|
2
2
|
require_relative 'mocked_object'
|
|
3
|
+
require_relative 'uniq_utils'
|
|
3
4
|
|
|
4
5
|
module Mokkku
|
|
5
6
|
module Utils
|
|
@@ -11,11 +12,12 @@ module Mokkku
|
|
|
11
12
|
mock_path = File.join(Mokkku.configuration.mocks_path, "#{mock_file_name}.yml")
|
|
12
13
|
data = File.read(mock_path)
|
|
13
14
|
parsed_data = YAML.safe_load(data, symbolize_names: true)
|
|
14
|
-
mocked_object = Mokkku::MockedObject.new(parsed_data)
|
|
15
|
+
mocked_object = Mokkku::MockedObject.new(const_name.to_s, parsed_data)
|
|
16
|
+
unique_mocked_object = Mokkku::UniqueUtils.add_instance(mocked_object, 100)
|
|
15
17
|
|
|
16
|
-
const_set const_name,
|
|
18
|
+
const_set const_name, unique_mocked_object
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
unique_mocked_object
|
|
19
21
|
end
|
|
20
22
|
end
|
|
21
23
|
end
|
data/lib/mokkku/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mokkku
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Paweł Dąbrowski
|
|
@@ -103,6 +103,7 @@ files:
|
|
|
103
103
|
- lib/mokkku/generators/gemini.rb
|
|
104
104
|
- lib/mokkku/generators/gpt.rb
|
|
105
105
|
- lib/mokkku/mocked_object.rb
|
|
106
|
+
- lib/mokkku/uniq_utils.rb
|
|
106
107
|
- lib/mokkku/utils.rb
|
|
107
108
|
- lib/mokkku/version.rb
|
|
108
109
|
- lib/mokkku/yaml_sanitizer.rb
|
|
@@ -124,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
124
125
|
- !ruby/object:Gem::Version
|
|
125
126
|
version: '0'
|
|
126
127
|
requirements: []
|
|
127
|
-
rubygems_version: 3.
|
|
128
|
+
rubygems_version: 3.2.32
|
|
128
129
|
signing_key:
|
|
129
130
|
specification_version: 4
|
|
130
131
|
summary: Generate mock data that is unique for your application
|