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 +4 -4
- data/lib/testing_record/dsl/builder/filters.rb +17 -3
- data/lib/testing_record/dsl/builder/settings.rb +2 -13
- data/lib/testing_record/model.rb +39 -5
- data/lib/testing_record/version.rb +1 -1
- metadata +16 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 544af1645ff65521c916a5ab879ad49711e9ef0aa18e58360ebc175672fc22bc
|
|
4
|
+
data.tar.gz: 139ed45cbfdc8f24cd77a88538a46962457b7c3c78e94142e501633d8ce603a9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
33
|
-
|
|
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
|
data/lib/testing_record/model.rb
CHANGED
|
@@ -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
|
-
|
|
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
|
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.
|
|
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:
|
|
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: '
|
|
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: '
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|