mokkku 0.0.8 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a918d20e114108edde5cd017fbbb18329cac43272aba65110042e3a27fb7f77c
4
- data.tar.gz: 2c0114ee979c6a69640f3e128d27cc56f1d2fd879fc260afbed13c35a0e476c0
3
+ metadata.gz: 4cd54dda1bd58c2eb99881690a02c99b7962c018bdf07132122d5240d6885c2f
4
+ data.tar.gz: 5c61996856695c6f53b8015eaa9c7923bf48a067969e8a9f4337db82cfc58b54
5
5
  SHA512:
6
- metadata.gz: '0029fbefa5b22bbd3001b701a051a80194389c6a585a44cb4f585542d378f505dab66ca09e40ea04e4c77b9d16c6471acbe9284537e6b9f2ce31bcb1b57fc618'
7
- data.tar.gz: 78697aed768e3c0476be71e2cf69dbdc09e3afb1b8cc30f7cc676e689245d4b0e529e1e604b63dca182fc802a0f597d84115b2054890da5e2c7e44f7b78002c7
6
+ metadata.gz: 15a72e5e0e60cb7a2ef7b9febcc3dc17dfa01d3393358ee4a147654e2e915eafee3c7d55a9fb174b83433d2e724117fa79c4f33ca23d89d7be4b731b2ed2f0dc
7
+ data.tar.gz: 76acb0e6fba9015ee604d9f19eaf9834ef66c8d1a752cade074753f4d7d69f19f2f783e1d7846a2c81beb4c9cab4f93a9aa7d44d6b8017440af5141c33775d6d
@@ -1,6 +1,10 @@
1
1
  module Mokkku
2
2
  class MockedObject
3
- def initialize(mocks)
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
- 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
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, mocked_object
18
+ const_set const_name, unique_mocked_object
17
19
 
18
- mocked_object
20
+ unique_mocked_object
19
21
  end
20
22
  end
21
23
  end
@@ -3,7 +3,7 @@ module Mokkku
3
3
  module_function
4
4
 
5
5
  def to_s
6
- '0.0.8'
6
+ '0.1.0'
7
7
  end
8
8
  end
9
9
  end
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.8
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.4.10
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