testingrecord 0.5 → 0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 38eafdf3beadae05ae9138e4701d4644b3299dfa34e17ecb952d3f1cc7d2d3e0
4
- data.tar.gz: beb36e06363dfaa6823f48f7b89b20502974d0d7c3f77a975991ab8e32104678
3
+ metadata.gz: 544af1645ff65521c916a5ab879ad49711e9ef0aa18e58360ebc175672fc22bc
4
+ data.tar.gz: 139ed45cbfdc8f24cd77a88538a46962457b7c3c78e94142e501633d8ce603a9
5
5
  SHA512:
6
- metadata.gz: 1e2f489178b2aa12ab5a40756495d19f78d8e5d3d40deaa5c743e0e8288f278d90325a2db6f05fdfef40753360869543717cbedd00756eb0d472bd1ba142db3e
7
- data.tar.gz: da06002f629a270cafba057303a3957e118b3f87f223731e1f8d9180191293abc979553da1ae4ca21570e81a0be823f905e8c11f87ac3c84ea79f20bb77b5a3e
6
+ metadata.gz: f0f8a9a6b9a1ec1d238038ee9bd3fcae8441d4488e1328fb8bf1693015ff309613a8ffdfb70c0bf12dc2189f1aaa9f5c83ea1cc7231bdf5e2dc63641cb865d94
7
+ data.tar.gz: cf54b5e657d77a034e631a4b1c5bb35cd21fe88f7281c26b317f0f832b26b8dedee3b5b1015fd5f453afb33a5479736c6722fba3d703fd36dbd77c98406618b9
@@ -21,6 +21,21 @@ module TestingRecord
21
21
  find_by({ email_address: })&.first&.tap { |entity| entity.class.current = entity }
22
22
  end
23
23
 
24
+ # Checks to see whether an entity exists with the provided id
25
+ #
26
+ # @return [Boolean]
27
+ def with_id?(id)
28
+ !with_id(id).nil?
29
+ end
30
+
31
+ # Finds an entity with the provided id
32
+ # If one is found, set it as the current entity
33
+ #
34
+ # @return [TestingRecord::Model, nil]
35
+ def with_id(id)
36
+ find_by({ id: })&.first&.tap { |entity| entity.class.current = entity }
37
+ end
38
+
24
39
  private
25
40
 
26
41
  # Finds all entities that match specified attribute values
@@ -29,9 +44,8 @@ module TestingRecord
29
44
  def find_by(attributes)
30
45
  pool = all
31
46
  attributes.each do |key, value|
32
- # TODO: Enable this logging once v0.5 is released with logger support
33
- # AutomationLogger.debug("Current user pool size: #{pool.length}")
34
- # AutomationLogger.debug("Filtering User list by #{key}: #{value}")
47
+ TestingRecord.logger.debug("Current user pool size: #{pool.length}")
48
+ TestingRecord.logger.debug("Filtering User list by #{key}: #{value}")
35
49
  pool = pool.select { |entity| entity.attributes[key] == value }
36
50
  end
37
51
  pool
@@ -10,6 +10,8 @@ module TestingRecord
10
10
  module Settings
11
11
  include DSL::Validation::Input
12
12
 
13
+ attr_reader :__primary_key
14
+
13
15
  # Sets an attribute on the model
14
16
  #
15
17
  # @return [Array<Symbol>]
@@ -40,19 +42,6 @@ module TestingRecord
40
42
  # @return [Symbol]
41
43
  def primary_key(option)
42
44
  instance_variable_set(:@__primary_key, option.to_sym)
43
- define_singleton_method(:__primary_key) { instance_variable_get(:@__primary_key) }
44
- end
45
-
46
- private
47
-
48
- def add_to_cache(entity)
49
- self.current = entity
50
- all << entity
51
- # TODO: Add log message (Requires adding logger)
52
- end
53
-
54
- def update_cache(entity)
55
- # TODO: This needs implementing properly
56
45
  end
57
46
  end
58
47
  end
@@ -17,40 +17,74 @@ module TestingRecord
17
17
  attr_accessor :current
18
18
 
19
19
  # Creates an instance of the model
20
- # -> Adding it to the cache if caching is enabled
21
20
  # -> Creating iVar values for each attribute that was provided
21
+ # -> Adding it to the cache if caching is enabled
22
22
  #
23
23
  # @return [TestingRecord::Model]
24
24
  def create(attributes = self.attributes)
25
25
  new(attributes).tap do |entity|
26
26
  attributes.each do |attribute_key, attribute_value|
27
27
  entity.instance_variable_set("@#{attribute_key}", attribute_value)
28
- attr_reader attribute_key
28
+ entity.class.attr_reader attribute_key
29
29
  end
30
- add_to_cache(entity) if respond_to?(:all)
30
+
31
+ break entity unless respond_to?(:all)
32
+
33
+ self.current = entity
34
+ all << entity
35
+ TestingRecord.logger.debug("Entity: #{entity} added to cache")
31
36
  end
32
37
  end
38
+
39
+ # Deletes the instance of the model from the cache (Does nothing if caching is disabled)
40
+ #
41
+ # @return [TestingRecord::Model]
42
+ def delete(entity)
43
+ all.delete(entity) if respond_to?(:all)
44
+ end
33
45
  end
34
46
 
35
47
  def initialize(attributes = {})
36
48
  @attributes = attributes
37
49
  end
38
50
 
51
+ # View the entity in question in a readable format. Displays all iVars and their values (Primary Key first if set)
52
+ #
53
+ # @return [String]
39
54
  def inspect
55
+ reorder_attributes_for_inspect!
40
56
  "#<#{self.class.name} #{attributes.map { |k, v| "@#{k}=#{v.inspect}" }.join(', ')}>"
41
57
  end
42
58
 
59
+ # Functionally equivalent to `inspect`
60
+ #
61
+ # @return [String]
43
62
  def to_s
44
63
  inspect
45
64
  end
46
65
 
66
+ # Updates an entity (instance), of a model
67
+ # -> Updating iVar values for each attribute that was provided
68
+ # -> It will **not** create new reader methods for new variables added
69
+ #
70
+ # @return [TestingRecord::Model]
47
71
  def update(attrs)
48
72
  attrs.each do |key, value|
49
- # TODO: Once logger is implemented this needs modifying to output a log message
50
- # AutomationLogger.debug("Updating '#{key}' on current User to be '#{value}'")
51
73
  attributes[key] = value
52
74
  instance_variable_set("@#{key}", value)
75
+ TestingRecord.logger.info("Updated '#{key}' on current #{self.class} entity to be '#{value}'")
53
76
  end
77
+ self
78
+ end
79
+
80
+ private
81
+
82
+ def reorder_attributes_for_inspect!
83
+ return unless self.class.__primary_key
84
+ return if attributes.keys.first == self.class.__primary_key
85
+
86
+ pk_value = attributes.delete(self.class.__primary_key)
87
+ @attributes = { self.class.__primary_key => pk_value }.merge(attributes)
54
88
  end
55
89
  end
56
90
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TestingRecord
4
- VERSION = '0.5'
4
+ VERSION = '0.6'
5
5
  end
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testingrecord
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.5'
4
+ version: '0.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Hill
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-12-30 00:00:00.000000000 Z
11
+ date: 2026-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: automation_helpers
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">"
18
+ - !ruby/object:Gem::Version
19
+ version: '5'
20
+ - - "<"
18
21
  - !ruby/object:Gem::Version
19
- version: '5.0'
22
+ version: '7'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">"
28
+ - !ruby/object:Gem::Version
29
+ version: '5'
30
+ - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: '5.0'
32
+ version: '7'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: logger
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +64,14 @@ dependencies:
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: 1.82.0
67
+ version: 1.84.0
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
- version: 1.82.0
74
+ version: 1.84.0
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: rubocop-performance
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +92,14 @@ dependencies:
86
92
  requirements:
87
93
  - - "~>"
88
94
  - !ruby/object:Gem::Version
89
- version: 3.8.0
95
+ version: 3.9.0
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
100
  - - "~>"
95
101
  - !ruby/object:Gem::Version
96
- version: 3.8.0
102
+ version: 3.9.0
97
103
  description: |-
98
104
  Use metaprogrammed cache-models to store data you create on-the-fly. Access and retrieve references to data \
99
105
  created from any place inside your tests.