mokkku 0.0.8 → 0.1.1

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: 57725aee6c5242ed58219debf928fcb0ad98c39b64f2505d5a2f31f20c5007bc
4
+ data.tar.gz: 7f1b8dbc79ab2df8ed26ee364deb7478a80a7f427fb7ce1cea764b0c337443df
5
5
  SHA512:
6
- metadata.gz: '0029fbefa5b22bbd3001b701a051a80194389c6a585a44cb4f585542d378f505dab66ca09e40ea04e4c77b9d16c6471acbe9284537e6b9f2ce31bcb1b57fc618'
7
- data.tar.gz: 78697aed768e3c0476be71e2cf69dbdc09e3afb1b8cc30f7cc676e689245d4b0e529e1e604b63dca182fc802a0f597d84115b2054890da5e2c7e44f7b78002c7
6
+ metadata.gz: 45428b6c93726c284b0ad40373e79ef8d2b265c33f604f6cab3f9211080713b70f8346f29816451faaee8801383e991892b405c423a03e3393a8f03ed9810568
7
+ data.tar.gz: 51005dd2a8e3a3f34c3d8ae4b9a66366d729f2c8b3cc057244596684555b5b5358f4fd3a3546b48dd45ca61ff60907d1cdf8d87b5c2c9fb057fae5bee9f7172a
@@ -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,62 @@
1
+ require 'set'
2
+
3
+ module Mokkku
4
+ class UniqueUtils
5
+ class << self
6
+ def add_instance(generator, max_retries)
7
+ instances[generator.mocked_class] ||= Mokkku::UniqueUtils.new(generator, max_retries)
8
+ end
9
+
10
+ def instances
11
+ Thread.current[:mokkku_unique_utils] ||= {}
12
+ end
13
+
14
+ def clear
15
+ instances.each_value(&:clear)
16
+ instances.clear
17
+ end
18
+ end
19
+
20
+ def initialize(generator, max_retries)
21
+ @generator = generator
22
+ @max_retries = max_retries
23
+ end
24
+
25
+ def clear
26
+ previous_results.clear
27
+ end
28
+
29
+ private
30
+
31
+ def method_missing(name, *args, **kwargs)
32
+ if @generator.selected_object.nil? && @generator.send(:mocked_objects).first.to_h.keys.include?(name)
33
+ @max_retries.times do
34
+ next_object = @generator.send(:mocked_objects).sample(random: Mokkku::Random)
35
+
36
+ next if previous_results.include?(next_object)
37
+
38
+ previous_results << next_object
39
+ @generator.instance_variable_set(:@selected_object, next_object)
40
+ break
41
+ end
42
+
43
+ if @generator.selected_object.nil?
44
+ previous_results.clear
45
+ next_object = @generator.send(:mocked_objects).sample(random: Mokkku::Random)
46
+ previous_results << next_object
47
+ @generator.instance_variable_set(:@selected_object, next_object)
48
+ end
49
+ end
50
+
51
+ @generator.public_send(name, *args, **kwargs)
52
+ end
53
+
54
+ def respond_to_missing?(name, *args)
55
+ @generator.respond_to?(name, *args) || super
56
+ end
57
+
58
+ def previous_results
59
+ @previous_results ||= Set.new
60
+ end
61
+ end
62
+ 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.1'
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.1
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