class_spec_helper 1.1.0 → 1.1.2

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: e21827629a25a7fa533931a96a8e3317a0bf74dc5098481c51e7706be055761a
4
- data.tar.gz: def51eadc569144a85d682661dbc743719bfcd9fa9b212cdf7d58d8b79c81168
3
+ metadata.gz: a2bf5403e75cc7d8a1f0a4e613bb65d256be099de8c9acd252dabd95dcc28dad
4
+ data.tar.gz: 02556ac69554c2234574d7d5a09f2bc15ee25e2b198064260e0eec49e1d1ba1a
5
5
  SHA512:
6
- metadata.gz: 6cdea831539568818a8f980c0308a9f9ae390b9378ac4533ba90462c62380ab2ec271dfced68a537b65a94c60a5bfa26dbb8b9a38e17dbe040d8a14313db29bd
7
- data.tar.gz: c8f6b92393d49d9e2ac65c12019ff81272d69c9d6e462b2080852bc569beb389741dd6e59655bcf7fc5401df17d39b6ca52e927491eca0907e9bb70eb10d5f97
6
+ metadata.gz: c8405baa97a32d70f27c684f58e13315a49f017c0a5f96c3d977dfb354beb8c6cdc08a6180b0c4388f6314838a1137d5c70ff315a27c629730fb20ef43a19403
7
+ data.tar.gz: fb811638184a2abf7ed2cac4417a719ffc43376e69e8f26078bebca0126bd80a83d97a611155094387c53eddb25ec367e1fdae911a6f6673d6c1e421578203c2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.2](https://github.com/craigulliott/class_spec_helper/compare/v1.1.1...v1.1.2) (2023-07-17)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * destroy classes in the reverse order which they were created to make sure nested classes are destroyed in a viable order ([61977da](https://github.com/craigulliott/class_spec_helper/commit/61977da3d0c0a1ff1c02e6a5faaceff0fad6fec1))
9
+
10
+ ## [1.1.1](https://github.com/craigulliott/class_spec_helper/compare/v1.1.0...v1.1.1) (2023-07-17)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * can now correctly build the new requested class if it is namespaced within already existing classes ([505b8c9](https://github.com/craigulliott/class_spec_helper/commit/505b8c9e07b3a326ac646c90ebb3b537df9d0981))
16
+
3
17
  ## [1.1.0](https://github.com/craigulliott/class_spec_helper/compare/v1.0.0...v1.1.0) (2023-07-17)
4
18
 
5
19
 
@@ -36,11 +36,21 @@ class ClassSpecHelper
36
36
  # is this class nested within a namespace?
37
37
  is_namespaced = module_names.any?
38
38
  if is_namespaced
39
+ first_name = module_names.shift
40
+ # keep track of the namespace
41
+ namespace = "::#{first_name}"
42
+ # does this exist, and is it a class
43
+ is_class = Module.const_defined?(namespace) && Module.const_get(namespace).is_a?(Class)
39
44
  # first module is always prepended by a "::" to ensure it is at the top most level
40
- eval_code_lines << "module ::#{module_names.shift}"
45
+ eval_code_lines << "#{is_class ? "class" : "module"} ::#{first_name}"
41
46
  # each remaining module name is just nested within this top most module
42
47
  module_names.each do |module_name|
43
- eval_code_lines << "module #{module_name}"
48
+ # keep building the namespace we we go
49
+ namespace = "#{namespace}::#{module_name}"
50
+ # does this exist, and is it a class
51
+ is_class = is_class = Module.const_defined?(namespace) && Module.const_get(namespace).is_a?(Class)
52
+ # add the next line
53
+ eval_code_lines << "#{is_class ? "class" : "module"} #{module_name}"
44
54
  end
45
55
  end
46
56
  # the class definition
@@ -5,7 +5,9 @@ class ClassSpecHelper
5
5
  # remove any classes (constants) which were
6
6
  # created by the class helper
7
7
  def remove_all_dynamically_created_classes
8
- @classes.each do |fully_qualified_class_name, klass|
8
+ # destroy them in the reverse order which they were created
9
+ @classes.keys.reverse_each do |fully_qualified_class_name|
10
+ klass = @classes[fully_qualified_class_name]
9
11
  # destroy the class by removing the constant
10
12
  destroy_class klass
11
13
  # remove the class from the list of classes
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class ClassSpecHelper
4
- VERSION = "1.1.0"
4
+ VERSION = "1.1.2"
5
5
  end
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: class_spec_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig Ulliott
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2023-07-17 00:00:00.000000000 Z
@@ -27,13 +27,13 @@ files:
27
27
  - lib/class_spec_helper/destroy_classes.rb
28
28
  - lib/class_spec_helper/naming.rb
29
29
  - lib/class_spec_helper/version.rb
30
- homepage:
30
+ homepage:
31
31
  licenses:
32
32
  - MIT
33
33
  metadata:
34
34
  source_code_uri: https://github.com/craigulliott/class_spec_helper/
35
35
  changelog_uri: https://github.com/craigulliott/class_spec_helper/blob/main/CHANGELOG.md
36
- post_install_message:
36
+ post_install_message:
37
37
  rdoc_options: []
38
38
  require_paths:
39
39
  - lib
@@ -48,8 +48,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
48
48
  - !ruby/object:Gem::Version
49
49
  version: '0'
50
50
  requirements: []
51
- rubygems_version: 3.3.26
52
- signing_key:
51
+ rubygems_version: 3.2.3
52
+ signing_key:
53
53
  specification_version: 4
54
54
  summary: Easily create and destroy named classes for use within your specs.
55
55
  test_files: []