email_domain_checker 0.1.1 → 0.1.2

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: 0cfee88066764e2eb7e65860751c532baa42fad3066ea868245d57786c826a8d
4
- data.tar.gz: 04c3ae92d49eddf9979755d2d60e1c2e3bfd77d7f8acb762beefd4bcb6eb01e9
3
+ metadata.gz: 9482f21ae74333979292271bf830aa22164a859388ba73b29a090118185ac797
4
+ data.tar.gz: 12fa14a045d73af82ff4d179c55d9f7c425ec25a1bc171d3328e60f5045f92de
5
5
  SHA512:
6
- metadata.gz: be4b1fc7445f80308a1ca93af0d068c4ded227ad59b630cb374c1c63e8a7bcf2d8b5ed8c75ef0ff09dfae937eaaec205358e637b0e4f0bb72dc6e4a46bb79553
7
- data.tar.gz: e4b1ed6439c71e06918488023a94d99334015af247846ab611076db9caf9c66a4ad4a1263562720ba1f54c6ae1cf0fec6329e636d5d8b1a420865cfacad9d130
6
+ metadata.gz: ab00a7b94993e50f3e5e8c4b7d7fa74c270a77778c4bd7c5796f84420fe1ffb0c929ec3efa4999d573ba38325e431cca20359e55dcfe68d4b73f67367f57a92d
7
+ data.tar.gz: 7a1f651e88f540389f8d213e381a37047c96370d3ff2bb1b4bd8a3655045ac9bb9cf749695ca8c774d2cca38050028e11468f181c883ff6b391abaf57f1d544a
data/CHANGELOG.md CHANGED
@@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.1.2] - 2025-11-05
9
+
10
+ ### Added
11
+ - Test mode feature to skip DNS checks during testing with block syntax support for configuration ([#4](https://github.com/tatematsu-k/email_domain_checker/pull/4))
12
+
13
+ ## [0.1.1] - 2025-11-04
14
+
15
+ ### Added
16
+ - ActiveModel/ActiveRecord validator integration (`DomainCheckValidator`) ([#3](https://github.com/tatematsu-k/email_domain_checker/pull/3))
17
+ - Automatic email normalization option in validator ([#3](https://github.com/tatematsu-k/email_domain_checker/pull/3))
18
+ - Ruby 3.4+ compatibility support for ActiveModel integration ([#3](https://github.com/tatematsu-k/email_domain_checker/pull/3))
19
+ - Comprehensive test coverage for ActiveModel validator ([#3](https://github.com/tatematsu-k/email_domain_checker/pull/3))
20
+
21
+ ### Changed
22
+ - CI: Added ActiveRecord version matrix testing for better compatibility testing ([#3](https://github.com/tatematsu-k/email_domain_checker/pull/3))
23
+
24
+ ### Documentation
25
+ - Added ActiveModel integration documentation with usage examples ([#3](https://github.com/tatematsu-k/email_domain_checker/pull/3))
26
+
8
27
  ## [0.1.0] - 2025-11-4
9
28
 
10
29
  ### Added
data/README.md CHANGED
@@ -39,6 +39,11 @@ EmailDomainChecker.normalize("User@Example.COM") # => "user@example.com"
39
39
 
40
40
  # Configure default options globally
41
41
  EmailDomainChecker.configure(timeout: 10, check_mx: true)
42
+
43
+ # Enable test mode (skips DNS checks)
44
+ EmailDomainChecker.configure do |config|
45
+ config.test_mode = true
46
+ end
42
47
  ```
43
48
 
44
49
  ### Using Checker class
@@ -125,6 +130,25 @@ end
125
130
  - `check_mx`: Check MX records for domain (default: true)
126
131
  - `check_a`: Check A records for domain (default: false)
127
132
  - `timeout`: DNS lookup timeout in seconds (default: 5)
133
+ - `test_mode`: Skip DNS checks (useful for testing with dummy data) (default: false)
134
+
135
+ ### Test Mode
136
+
137
+ When writing tests, you may want to skip DNS checks to avoid external requests. Enable test mode to skip all DNS validations (MX and A record checks):
138
+
139
+ ```ruby
140
+ # In spec_helper.rb or test_helper.rb
141
+ EmailDomainChecker.configure do |config|
142
+ config.test_mode = true
143
+ end
144
+
145
+ # Or in a before block
146
+ before do
147
+ EmailDomainChecker::Config.test_mode = true
148
+ end
149
+ ```
150
+
151
+ When test mode is enabled, domain validation will always return `true` without making any DNS requests, allowing you to use dummy email addresses in your tests without external dependencies.
128
152
 
129
153
  ## Development
130
154
 
@@ -11,15 +11,43 @@ module EmailDomainChecker
11
11
  }.freeze
12
12
 
13
13
  class << self
14
- attr_accessor :default_options
14
+ attr_accessor :default_options, :test_mode
15
15
 
16
- def configure(options = {})
17
- @default_options = DEFAULT_OPTIONS.merge(options)
16
+ def configure(options = {}, &block)
17
+ if block_given?
18
+ config_instance = new
19
+ block.call(config_instance)
20
+ @default_options = DEFAULT_OPTIONS.merge(options)
21
+ config_instance
22
+ else
23
+ @default_options = DEFAULT_OPTIONS.merge(options)
24
+ new
25
+ end
18
26
  end
19
27
 
20
28
  def reset
21
29
  @default_options = DEFAULT_OPTIONS.dup
30
+ @test_mode = false
22
31
  end
32
+
33
+ def test_mode=(value)
34
+ @test_mode = value
35
+ end
36
+
37
+ def test_mode?
38
+ @test_mode == true
39
+ end
40
+ end
41
+
42
+ attr_accessor :test_mode
43
+
44
+ def initialize
45
+ @test_mode = self.class.test_mode || false
46
+ end
47
+
48
+ def test_mode=(value)
49
+ @test_mode = value
50
+ self.class.test_mode = value
23
51
  end
24
52
 
25
53
  reset
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "dns_resolver"
4
+ require_relative "config"
4
5
 
5
6
  module EmailDomainChecker
6
7
  class DomainValidator
@@ -18,6 +19,9 @@ module EmailDomainChecker
18
19
  def valid?(domain)
19
20
  return false if domain.nil? || domain.empty?
20
21
 
22
+ # Skip DNS checks if test mode is enabled
23
+ return true if Config.test_mode?
24
+
21
25
  check_domain_records(domain)
22
26
  end
23
27
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EmailDomainChecker
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
@@ -43,7 +43,7 @@ module EmailDomainChecker
43
43
  end
44
44
 
45
45
  # Configure default options
46
- def self.configure(options = {})
47
- Config.configure(options)
46
+ def self.configure(options = {}, &block)
47
+ Config.configure(options, &block)
48
48
  end
49
49
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: email_domain_checker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koki Tatematsu