truemail-rspec 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c9011454b336b9f353615024845958be0bf33cfc184d64b93f25c5d4f667dcec
4
+ data.tar.gz: 93c2c4f661d79147b3b764e802ce423a10c840d171228331e26b3abd828d6a91
5
+ SHA512:
6
+ metadata.gz: 27329cf2e03affe405e74e7b44abe949ad8fbeebb9daa48d3b69d923494b16fe0125e5268d9aea120344aded6c9bc70832c28ff6789e0b98adecd67429e5af43
7
+ data.tar.gz: c68c52e55bd75cc6406f576fd4c9bccf620cfa55d02bbd4fbf9a71268d9a10e788e0289c150d30efe19ca367437750bb66c813205effeb50fed70998db6e5012
@@ -0,0 +1,89 @@
1
+ defaults: &defaults
2
+ working_directory: ~/truemail-rspec
3
+ docker:
4
+ - image: circleci/ruby:2.5.0-node
5
+ environment:
6
+ CC_TEST_REPORTER_ID: 889fa37782e4f5d0f81705f0d869a9c907f04151faae8260dde55d3f74e65606
7
+
8
+ references:
9
+ restore_bundle_cache: &restore_bundle_cache
10
+ restore_cache:
11
+ keys:
12
+ - truemail-rspec-{{ checksum "truemail-rspec.gemspec" }}
13
+
14
+ bundle_install: &bundle_install
15
+ run:
16
+ name: Installing gems
17
+ command: bundle install --path vendor/bundle
18
+
19
+ save_bundle_cache: &save_bundle_cache
20
+ save_cache:
21
+ key: truemail-rspec-{{ checksum "truemail-rspec.gemspec" }}
22
+ paths:
23
+ - vendor/bundle
24
+
25
+ install_codeclimate_reporter: &install_codeclimate_reporter
26
+ run:
27
+ name: Install Code Climate Test Reporter
28
+ command: |
29
+ curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
30
+ chmod +x ./cc-test-reporter
31
+
32
+ version: 2
33
+ jobs:
34
+ linters:
35
+ <<: *defaults
36
+
37
+ steps:
38
+ - checkout
39
+
40
+ - <<: *restore_bundle_cache
41
+ - <<: *bundle_install
42
+ - <<: *save_bundle_cache
43
+
44
+ - run:
45
+ name: Running overcommit
46
+ command: |
47
+ bundle exec overcommit -s
48
+ SKIP=AuthorEmail,AuthorName bundle exec overcommit -r
49
+
50
+ tests:
51
+ <<: *defaults
52
+
53
+ steps:
54
+ - checkout
55
+
56
+ - <<: *restore_bundle_cache
57
+ - <<: *bundle_install
58
+ - <<: *save_bundle_cache
59
+ - <<: *install_codeclimate_reporter
60
+
61
+ - run:
62
+ name: Running tests
63
+ command: |
64
+ mkdir /tmp/test-results
65
+ ./cc-test-reporter before-build
66
+ bundle exec rspec
67
+
68
+ - run:
69
+ name: Code Climate Test Coverage
70
+ command: |
71
+ ./cc-test-reporter format-coverage -t simplecov -o "coverage/codeclimate.$CIRCLE_NODE_INDEX.json"
72
+
73
+ - store_test_results:
74
+ path: /tmp/test-results
75
+
76
+ - store_artifacts:
77
+ path: /tmp/test-results
78
+ destination: test-results
79
+
80
+ - deploy:
81
+ command: |
82
+ ./cc-test-reporter sum-coverage --output - --parts $CIRCLE_NODE_TOTAL coverage/codeclimate.*.json | ./cc-test-reporter upload-coverage --debug --input -
83
+
84
+ workflows:
85
+ version: 2
86
+ build:
87
+ jobs:
88
+ - linters
89
+ - tests
@@ -0,0 +1,17 @@
1
+ <!-- Thanks for helping to make Truemail better! Before submit your issue, please make sure to check the following boxes by putting an x in the [ ] (don't: [x ], [ x], do: [x]) -->
2
+
3
+ ### New Issue Checklist
4
+
5
+ - [ ] I have updated truemail-rspec to the latest version
6
+ - [ ] I have read the [Contribution Guidelines](https://github.com/truemail-rb/truemail-rspec/blob/master/CONTRIBUTING.md)
7
+ - [ ] I have read the [documentation](https://github.com/truemail-rb/truemail-rspec/blob/master/README.md)
8
+ - [ ] I have searched for [existing GitHub issues](https://github.com/truemail-rb/truemail-rspec/issues)
9
+
10
+ ### Issue Description
11
+ <!-- Please include what's happening, expected behavior, and any relevant code samples -->
12
+
13
+ ##### Complete output when running truemail, including the stack trace and command used
14
+
15
+ <details>
16
+ <pre>[INSERT OUTPUT HERE]</pre>
17
+ </details>
@@ -0,0 +1,46 @@
1
+ # PR Details
2
+
3
+ <!-- Provide a general summary of your changes in the Title above -->
4
+
5
+ ## Description
6
+
7
+ <!--- Describe your changes in detail -->
8
+
9
+ ## Related Issue
10
+
11
+ <!--- This project only accepts pull requests related to open issues -->
12
+ <!--- If suggesting a new feature or change, please discuss it in an issue first -->
13
+ <!--- If fixing a bug, there should be an issue describing it with steps to reproduce -->
14
+ <!--- Please link to the issue here: -->
15
+
16
+ ## Motivation and Context
17
+
18
+ <!--- Why is this change required? What problem does it solve? -->
19
+
20
+ ## How Has This Been Tested
21
+
22
+ <!--- Please describe in detail how you tested your changes. -->
23
+ <!--- Include details of your testing environment, and the tests you ran to -->
24
+ <!--- see how your change affects other areas of the code, etc. -->
25
+
26
+ ## Types of changes
27
+
28
+ <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->
29
+
30
+ - [ ] Docs change / refactoring / dependency upgrade
31
+ - [ ] Bug fix (non-breaking change which fixes an issue)
32
+ - [ ] New feature (non-breaking change which adds functionality)
33
+ - [ ] Breaking change (fix or feature that would cause existing functionality to change)
34
+
35
+ ## Checklist
36
+
37
+ <!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
38
+ <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
39
+
40
+ - [ ] My code follows the code style of this project
41
+ - [ ] My change requires a change to the documentation
42
+ - [ ] I have updated the documentation accordingly
43
+ - [ ] I have read the [**CONTRIBUTING** document](https://github.com/truemail-rb/truemail-rspec/blob/master/CONTRIBUTING.md)
44
+ - [ ] I have added tests to cover my changes
45
+ - [ ] I have run `bundle exec rspec` from the root directory to see all new and existing tests pass
46
+ - [ ] I have run `rubocop` and `reek` to ensure the code style is valid
@@ -0,0 +1,3 @@
1
+ /.rspec_status
2
+ /pkg
3
+ /coverage/
@@ -0,0 +1,32 @@
1
+ PreCommit:
2
+ AuthorEmail:
3
+ enabled: true
4
+ required: false
5
+
6
+ AuthorName:
7
+ enabled: false
8
+
9
+ BundleAudit:
10
+ enabled: true
11
+
12
+ Fasterer:
13
+ enabled: true
14
+ include: '**/*.rb'
15
+
16
+ TrailingWhitespace:
17
+ enabled: true
18
+
19
+ RuboCop:
20
+ enabled: true
21
+ flags: ['--format=emacs', '--force-exclusion', '--display-cop-names']
22
+
23
+ Reek:
24
+ enabled: true
25
+ flags: ['--force-exclusion']
26
+
27
+ PostCheckout:
28
+ ALL:
29
+ quiet: true
30
+
31
+ IndexTags:
32
+ enabled: true
@@ -0,0 +1,28 @@
1
+ detectors:
2
+ IrresponsibleModule:
3
+ enabled: false
4
+
5
+ FeatureEnvy:
6
+ exclude:
7
+ - Truemail::RSpec::ConfigurationHelper#create_configuration
8
+ - Truemail::RSpec::ValidatorHelper#request_instance
9
+
10
+ NestedIterators:
11
+ exclude:
12
+ - Truemail::RSpec::ConfigurationHelper#configuration_block
13
+
14
+ BooleanParameter:
15
+ exclude:
16
+ - Truemail::RSpec::ValidatorHelper#create_validator
17
+
18
+ DuplicateMethodCall:
19
+ exclude:
20
+ - Truemail::RSpec::ValidatorHelper#mx_layer
21
+ - Truemail::RSpec::ValidatorHelper#smtp_layer
22
+ - Truemail::RSpec::ValidatorHelper#unstub_validation_layers
23
+
24
+ LongParameterList:
25
+ enabled: false
26
+
27
+ TooManyStatements:
28
+ enabled: false
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --require spec_helper
2
+ --format documentation
@@ -0,0 +1,79 @@
1
+ require:
2
+ - rubocop-rspec
3
+ - rubocop-performance
4
+
5
+ AllCops:
6
+ DisplayCopNames: true
7
+ DisplayStyleGuide: true
8
+ StyleGuideCopsOnly: true
9
+ TargetRubyVersion: 2.5
10
+
11
+ Metrics/LineLength:
12
+ Max: 140
13
+
14
+ Metrics/ClassLength:
15
+ Max: 150
16
+
17
+ Metrics/MethodLength:
18
+ Max: 15
19
+
20
+ Metrics/CyclomaticComplexity:
21
+ Enabled: false
22
+
23
+ Metrics/PerceivedComplexity:
24
+ Enabled: false
25
+
26
+ Style/Documentation:
27
+ Enabled: false
28
+
29
+ Style/DoubleNegation:
30
+ Enabled: false
31
+
32
+ Style/EmptyCaseCondition:
33
+ Enabled: false
34
+
35
+ Style/RescueStandardError:
36
+ Enabled: false
37
+
38
+ Layout/ClassStructure:
39
+ Enabled: true
40
+ Categories:
41
+ module_inclusion:
42
+ - include
43
+ - prepend
44
+ - extend
45
+ associations:
46
+ - has_one
47
+ - has_many
48
+ - belongs_to
49
+ - has_and_belongs_to_many
50
+ ExpectedOrder:
51
+ - module_inclusion
52
+ - constants
53
+ - associations
54
+ - public_class_methods
55
+ - initializer
56
+ - public_methods
57
+ - protected_methods
58
+ - private_methods
59
+
60
+ RSpec/ExampleLength:
61
+ Enabled: false
62
+
63
+ RSpec/NestedGroups:
64
+ Enabled: false
65
+
66
+ RSpec/MultipleExpectations:
67
+ Enabled: false
68
+
69
+ RSpec/MessageChain:
70
+ Enabled: false
71
+
72
+ RSpec/ContextWording:
73
+ Enabled: false
74
+
75
+ RSpec/AnyInstance:
76
+ Enabled: false
77
+
78
+ RSpec/MessageSpies:
79
+ Enabled: false
@@ -0,0 +1 @@
1
+ truemail-rspec
@@ -0,0 +1 @@
1
+ ruby-2.5.0
@@ -0,0 +1,9 @@
1
+ # Changelog
2
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
3
+
4
+ ## [0.1.0] - 2019-11-19
5
+
6
+ ### Added
7
+ - Configuration RSpec helper
8
+ - Validator RSpec helper
9
+ - Gem documentation
@@ -0,0 +1,74 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at admin@bestweb.com.ua. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at [http://contributor-covenant.org/version/1/4][version]
72
+
73
+ [homepage]: http://contributor-covenant.org
74
+ [version]: http://contributor-covenant.org/version/1/4/
@@ -0,0 +1,45 @@
1
+ # Contributing to Truemail
2
+
3
+ Please take a moment to review this document in order to make the contribution process easy and effective for everyone involved.
4
+
5
+ Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue or assessing patches and features.
6
+
7
+ ## Using the issue tracker
8
+
9
+ The issue tracker is the preferred channel for [bug reports](#bugs), [features requests](#features) and [submitting pull requests](#pull-requests).
10
+
11
+ <a name="bugs"></a>
12
+ ## Bug/issue reports
13
+
14
+ A bug is a _demonstrable problem_ that is caused by the code in the repository.
15
+ Good bug reports are extremely helpful - thank you!
16
+
17
+ Guidelines for bug reports:
18
+
19
+ 1. **Use the GitHub issue search** &mdash; check if the issue has already been reported
20
+ 2. **Check if the issue has been fixed** &mdash; try to reproduce it using the latest `master` or development branch in the repository
21
+ 3. Truemail [issue template](.github/ISSUE_TEMPLATE.md)
22
+
23
+ A good bug report shouldn't leave others needing to chase you up for more information. Please try to be as detailed as possible in your report. What is your environment? What steps will reproduce the issue? What would you expect to be the outcome? All these details will help people to fix any potential bugs.
24
+
25
+ <a name="features"></a>
26
+ ## Feature requests
27
+
28
+ Feature requests are welcome. But take a moment to find out whether your idea fits with the scope and aims of the project. It's up to *you* to make a strong case to convince the project's developers of the merits of this feature. Please provide as much detail and context as possible.
29
+
30
+ <a name="pull-requests"></a>
31
+ ## Pull requests
32
+
33
+ Good pull requests - patches, improvements, new features - are a fantastic help. They should remain focused in scope and avoid containing unrelated commits.
34
+
35
+ **Please ask first** before embarking on any significant pull request (e.g. implementing features, refactoring code, porting to a different language), otherwise you risk spending a lot of time working on something that the project's developers might not want to merge into the project.
36
+
37
+ Please adhere to the coding conventions used throughout a project (indentation, accurate comments, etc.) and any other requirements (such as test coverage). Not all features proposed will be added but we are open to having a conversation about a feature you are championing.
38
+
39
+ Guidelines for pull requests:
40
+
41
+ 1. Truemail [pull request template](.github/PULL_REQUEST_TEMPLATE.md)
42
+ 2. Fork the repo
43
+ 3. Run the tests. This is to make sure your starting point works. Tests can be run via ```rspec```
44
+ 4. Create a new branch and make your changes. This includes tests for features!
45
+ 5. Push to your fork and submit a pull request
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
5
+ gemspec
@@ -0,0 +1,128 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ truemail-rspec (0.1.0)
5
+ rspec (~> 3.0)
6
+ truemail (~> 1.4)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ ast (2.4.0)
12
+ axiom-types (0.1.1)
13
+ descendants_tracker (~> 0.0.4)
14
+ ice_nine (~> 0.11.0)
15
+ thread_safe (~> 0.3, >= 0.3.1)
16
+ bundle-audit (0.1.0)
17
+ bundler-audit
18
+ bundler-audit (0.6.1)
19
+ bundler (>= 1.2.0, < 3)
20
+ thor (~> 0.18)
21
+ byebug (11.0.1)
22
+ childprocess (3.0.0)
23
+ codeclimate-engine-rb (0.4.1)
24
+ virtus (~> 1.0)
25
+ coderay (1.1.2)
26
+ coercible (1.0.0)
27
+ descendants_tracker (~> 0.0.1)
28
+ colorize (0.8.1)
29
+ descendants_tracker (0.0.4)
30
+ thread_safe (~> 0.3, >= 0.3.1)
31
+ diff-lcs (1.3)
32
+ docile (1.3.2)
33
+ equalizer (0.0.11)
34
+ fasterer (0.8.0)
35
+ colorize (~> 0.7)
36
+ ruby_parser (>= 3.14.1)
37
+ ffaker (2.13.0)
38
+ ice_nine (0.11.2)
39
+ iniparse (1.4.4)
40
+ jaro_winkler (1.5.4)
41
+ json (2.2.0)
42
+ kwalify (0.7.2)
43
+ method_source (0.9.2)
44
+ overcommit (0.51.0)
45
+ childprocess (>= 0.6.3, < 4)
46
+ iniparse (~> 1.4)
47
+ parallel (1.19.0)
48
+ parser (2.6.5.0)
49
+ ast (~> 2.4.0)
50
+ pry (0.12.2)
51
+ coderay (~> 1.1.0)
52
+ method_source (~> 0.9.0)
53
+ pry-byebug (3.7.0)
54
+ byebug (~> 11.0)
55
+ pry (~> 0.10)
56
+ psych (3.1.0)
57
+ rainbow (3.0.0)
58
+ rake (13.0.1)
59
+ reek (5.5.0)
60
+ codeclimate-engine-rb (~> 0.4.0)
61
+ kwalify (~> 0.7.0)
62
+ parser (>= 2.5.0.0, < 2.7, != 2.5.1.1)
63
+ psych (~> 3.1.0)
64
+ rainbow (>= 2.0, < 4.0)
65
+ rspec (3.9.0)
66
+ rspec-core (~> 3.9.0)
67
+ rspec-expectations (~> 3.9.0)
68
+ rspec-mocks (~> 3.9.0)
69
+ rspec-core (3.9.0)
70
+ rspec-support (~> 3.9.0)
71
+ rspec-expectations (3.9.0)
72
+ diff-lcs (>= 1.2.0, < 2.0)
73
+ rspec-support (~> 3.9.0)
74
+ rspec-mocks (3.9.0)
75
+ diff-lcs (>= 1.2.0, < 2.0)
76
+ rspec-support (~> 3.9.0)
77
+ rspec-support (3.9.0)
78
+ rubocop (0.76.0)
79
+ jaro_winkler (~> 1.5.1)
80
+ parallel (~> 1.10)
81
+ parser (>= 2.6)
82
+ rainbow (>= 2.2.2, < 4.0)
83
+ ruby-progressbar (~> 1.7)
84
+ unicode-display_width (>= 1.4.0, < 1.7)
85
+ rubocop-performance (1.5.1)
86
+ rubocop (>= 0.71.0)
87
+ rubocop-rspec (1.36.0)
88
+ rubocop (>= 0.68.1)
89
+ ruby-progressbar (1.10.1)
90
+ ruby_parser (3.14.1)
91
+ sexp_processor (~> 4.9)
92
+ sexp_processor (4.13.0)
93
+ simplecov (0.17.1)
94
+ docile (~> 1.1)
95
+ json (>= 1.8, < 3)
96
+ simplecov-html (~> 0.10.0)
97
+ simplecov-html (0.10.2)
98
+ thor (0.20.3)
99
+ thread_safe (0.3.6)
100
+ truemail (1.4.0)
101
+ unicode-display_width (1.6.0)
102
+ virtus (1.0.5)
103
+ axiom-types (~> 0.1)
104
+ coercible (~> 1.0)
105
+ descendants_tracker (~> 0.0, >= 0.0.3)
106
+ equalizer (~> 0.0, >= 0.0.9)
107
+
108
+ PLATFORMS
109
+ ruby
110
+
111
+ DEPENDENCIES
112
+ bundle-audit (~> 0.1.0)
113
+ bundler (~> 1.16)
114
+ fasterer (~> 0.8.0)
115
+ ffaker (~> 2.13)
116
+ overcommit (~> 0.51.0)
117
+ pry-byebug (~> 3.7)
118
+ rake (~> 13.0, >= 13.0.1)
119
+ reek (~> 5.5)
120
+ rspec (~> 3.9)
121
+ rubocop (~> 0.76.0)
122
+ rubocop-performance (~> 1.5, >= 1.5.1)
123
+ rubocop-rspec (~> 1.36)
124
+ simplecov (~> 0.17.1)
125
+ truemail-rspec!
126
+
127
+ BUNDLED WITH
128
+ 1.16.6
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2019 Vladislav Trotsenko
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,119 @@
1
+ # <img src='https://repository-images.githubusercontent.com/222414074/393c9600-09f9-11ea-8d21-345619b97b11' height='250' alt='Truemail RSpec helpers' />
2
+
3
+ [![Maintainability](https://api.codeclimate.com/v1/badges/d23d82c1c1bdbc271b81/maintainability)](https://codeclimate.com/github/truemail-rb/truemail-rspec/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/d23d82c1c1bdbc271b81/test_coverage)](https://codeclimate.com/github/truemail-rb/truemail-rspec/test_coverage) [![CircleCI](https://circleci.com/gh/truemail-rb/truemail-rspec/tree/master.svg?style=svg)](https://circleci.com/gh/truemail-rb/truemail-rspec/tree/master) [![Gem Version](https://badge.fury.io/rb/truemail-rspec.svg)](https://badge.fury.io/rb/truemail-rspec) [![Downloads](https://img.shields.io/gem/dt/truemail-rspec.svg?colorA=004d99&colorB=0073e6)](https://rubygems.org/gems/truemail-rspec) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v1.4%20adopted-ff69b4.svg)](CODE_OF_CONDUCT.md)
4
+
5
+ `truemail-rspec` gem helps you create `Truemail::Configuration` and `Truemail::Validator` instances for your RSpec environment.
6
+
7
+ ## Table of Contents
8
+
9
+ - [Features](#features)
10
+ - [Installation](#installation)
11
+ - [Usage](#usage)
12
+ - [Create configuration instance](#create-configuration-instance)
13
+ - [Configuration instance with default random params](#configuration-instance-with-default-random-params)
14
+ - [Configuration instance with predefined params](#configuration-instance-with-predefined-params)
15
+ - [Create validator instance](#create-validator-instance)
16
+ - [create_servers_list](#create_servers_list)
17
+ - [create_validator DSL](#create_validator-dsl)
18
+ - [Contributing](#contributing)
19
+ - [License](#license)
20
+ - [Code of Conduct](#code-of-conduct)
21
+ - [Versioning](#versioning)
22
+ - [Changelog](CHANGELOG.md)
23
+
24
+ ## Features
25
+
26
+ - Ability to create `Truemail::Configuration` instance with random or with predefined params
27
+ - Ability to create `Truemail::Validator` instance with random or with predefined params
28
+
29
+ ## Installation
30
+
31
+ Add this line to your application's Gemfile:
32
+
33
+ ```ruby
34
+ group :test do
35
+ gem 'truemail-rspec'
36
+ end
37
+ ```
38
+
39
+ And add into your `spec_helper.rb` or `rails_helper.rb`:
40
+
41
+ ```ruby
42
+ RSpec.configure do |config|
43
+ config.include Truemail::RSpec
44
+ end
45
+ ```
46
+
47
+ And then execute:
48
+
49
+ $ bundle
50
+
51
+ Or install it yourself as:
52
+
53
+ $ gem install truemail-rspec
54
+
55
+ ## Usage
56
+
57
+ ### Create configuration instance
58
+
59
+ Allow to create configuration instance with random or with predefined params.
60
+
61
+ #### Configuration instance with default random params
62
+
63
+ ```ruby
64
+ create_configuration
65
+
66
+ # => returns Truemail::Configuration instance with
67
+ # random verifier_email and default Truemail::Configuration params
68
+ ```
69
+
70
+ #### Configuration instance with predefined params
71
+
72
+ All `Truemail::Configuration` [available params](https://github.com/truemail-rb/truemail-rspec#setting-global-configuration)
73
+
74
+ ```ruby
75
+ create_configuration(verifier_email: 'email@domain.com', verifier_domain: 'other-domain.com')
76
+ # => returns Truemail::Configuration instance with custom settings
77
+ ```
78
+
79
+ ### Create validator instance
80
+
81
+ Allow to create validator instance with default random or with predefined params.
82
+
83
+ #### create_servers_list
84
+
85
+ ```ruby
86
+ create_servers_list # => returns array with random ip addresses
87
+ ```
88
+
89
+ #### create_validator DSL
90
+
91
+ ```ruby
92
+ create_validator(
93
+ validation_type, # optional, :regex, :mx, :smtp, by default creates :smtp validation
94
+ email, # optional, by default random email
95
+ mail_servers, # optional, by default array with random ip addresses
96
+ success: true, # optional, by default true
97
+ configuration: create_configuration # optional, by default creates random configuration
98
+ )
99
+
100
+ # => returns Truemail::Validator instance follow passed params
101
+ ```
102
+
103
+ ---
104
+
105
+ ## Contributing
106
+
107
+ Bug reports and pull requests are welcome on GitHub at https://github.com/truemail-rb/truemail-rspec. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. Please check the [open tikets](https://github.com/truemail-rb/truemail-rspec/issues). Be shure to follow Contributor Code of Conduct below and our [Contributing Guidelines](CONTRIBUTING.md).
108
+
109
+ ## License
110
+
111
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
112
+
113
+ ## Code of Conduct
114
+
115
+ Everyone interacting in the `truemail-rspec` project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](CODE_OF_CONDUCT.md).
116
+
117
+ ## Versioning
118
+
119
+ `truemail-rspec` uses [Semantic Versioning 2.0.0](https://semver.org)
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task default: :spec
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'truemail/rspec'
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ # require "pry"
12
+ # Pry.start
13
+
14
+ require 'irb'
15
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'truemail/rspec/version'
4
+ require 'truemail/rspec/configuration_helper'
5
+ require 'truemail/rspec/validator_helper'
6
+
7
+ module Truemail
8
+ module RSpec
9
+ include Truemail::RSpec::ConfigurationHelper
10
+ include Truemail::RSpec::ValidatorHelper
11
+ end
12
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Truemail
4
+ module RSpec
5
+ module ConfigurationHelper
6
+ def configuration_block(**configuration_settings)
7
+ lambda do |config|
8
+ configuration_settings.each do |attribute, value|
9
+ config.public_send(:"#{attribute}=", value)
10
+ end
11
+ end
12
+ end
13
+
14
+ def create_configuration(**configuration_settings)
15
+ configuration_settings[:verifier_email] = FFaker::Internet.email unless configuration_settings[:verifier_email]
16
+ Truemail::Configuration.new(&configuration_block(configuration_settings))
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,124 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Truemail
4
+ module RSpec
5
+ module ValidatorHelper
6
+ def create_servers_list
7
+ Array.new(rand(1..4)) { FFaker::Internet.ip_v4_address }
8
+ end
9
+
10
+ def create_validator(
11
+ validation_type = nil,
12
+ email = FFaker::Internet.email,
13
+ mail_servers = create_servers_list,
14
+ success: true,
15
+ configuration: create_configuration
16
+ )
17
+ set_expected_result(validation_type, email, mail_servers, success, configuration)
18
+ stub_validation_layers
19
+ validator_instance = ValidatorFactory.call(validation_type, success, email, configuration)
20
+ unstub_validation_layers
21
+ validator_instance
22
+ end
23
+
24
+ private
25
+
26
+ attr_reader :validation_type, :email, :success, :configuration, :mail_servers
27
+
28
+ def set_expected_result(validation_type, email, mail_servers, success, configuration)
29
+ @validation_type = validation_type
30
+ @email = email
31
+ @mail_servers = mail_servers
32
+ @success = success
33
+ @configuration = configuration
34
+ end
35
+
36
+ def stub_validation_layers
37
+ case validation_type
38
+ when :regex then regex_layer
39
+ when :mx then mx_layer
40
+ else smtp_layer
41
+ end
42
+ end
43
+
44
+ def unstub_validation_layers
45
+ allow_any_instance_of(Truemail::Validate::Regex).to receive(:match_regex_pattern?).and_call_original
46
+ allow(Truemail::Validate::Regex).to receive(:check).and_call_original
47
+ allow_any_instance_of(Truemail::Validate::Mx).to receive(:mx_records).and_call_original
48
+ allow_any_instance_of(Truemail::Validate::Mx).to receive(:domain_not_include_null_mx).and_call_original
49
+ allow_any_instance_of(Truemail::Validate::Smtp).to receive(:establish_smtp_connection).and_call_original
50
+ allow_any_instance_of(Truemail::Validate::Smtp).to receive(:success_response?).and_call_original
51
+ allow_any_instance_of(Truemail::Validate::Smtp).to receive(:smtp_results).and_call_original
52
+ end
53
+
54
+ def regex_layer
55
+ allow_any_instance_of(Truemail::Validate::Regex).to receive(:match_regex_pattern?).and_return(success)
56
+ end
57
+
58
+ def mx_layer
59
+ allow(Truemail::Validate::Regex).to receive(:check).and_return(true)
60
+ allow_any_instance_of(Truemail::Validate::Mx).to receive(:mx_records).and_return(mail_servers)
61
+ allow_any_instance_of(Truemail::Validate::Mx).to receive(:domain_not_include_null_mx).and_return(success)
62
+ end
63
+
64
+ def request_instance
65
+ request = Truemail::Validate::Smtp::Request.new(
66
+ host: mail_servers.first,
67
+ email: email,
68
+ configuration: configuration
69
+ )
70
+
71
+ request.response.tap do |response|
72
+ response.port_opened = true
73
+ response.connection = true
74
+ response.helo = true
75
+ response.mailfrom = true
76
+ response.rcptto = false
77
+ response.errors[:rcptto] = 'user not found'
78
+ end
79
+
80
+ request
81
+ end
82
+
83
+ def smtp_layer
84
+ allow(Truemail::Validate::Regex).to receive(:check).and_return(true)
85
+ allow_any_instance_of(Truemail::Validate::Mx).to receive(:mx_records).and_return(mail_servers)
86
+ allow_any_instance_of(Truemail::Validate::Mx).to receive(:domain_not_include_null_mx).and_return(true)
87
+ allow_any_instance_of(Truemail::Validate::Smtp).to receive(:establish_smtp_connection).and_return(true)
88
+ return allow_any_instance_of(Truemail::Validate::Smtp).to receive(:success_response?).and_return(true) if success
89
+ allow_any_instance_of(Truemail::Validate::Smtp).to receive(:smtp_results).and_return([request_instance])
90
+ end
91
+
92
+ class ValidatorFactory
93
+ def self.call(validation_type, success, email, configuration)
94
+ new(validation_type, success, email, configuration).build
95
+ end
96
+
97
+ def initialize(validation_type, success, email, configuration)
98
+ @validation_type = validation_type
99
+ @success = success
100
+ @email = email
101
+ @configuration = configuration
102
+ end
103
+
104
+ def build
105
+ process_validator_params
106
+ Truemail::Validator.new(email, with: validation_type, configuration: configuration).run
107
+ end
108
+
109
+ private
110
+
111
+ attr_reader :success, :email, :configuration
112
+ attr_accessor :validation_type
113
+
114
+ def process_validator_params
115
+ return unless validation_type.eql?(:whitelist)
116
+ self.validation_type = nil
117
+ method = success ? :whitelisted_domains : :blacklisted_domains
118
+ domain = email[Truemail::RegexConstant::REGEX_EMAIL_PATTERN, 3]
119
+ configuration.tap { |config| config.public_send(method) << domain }
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Truemail
4
+ module RSpec
5
+ VERSION = '0.1.0'
6
+ end
7
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'truemail/rspec/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'truemail-rspec'
9
+ spec.version = Truemail::RSpec::VERSION
10
+ spec.authors = ['Vladislav Trotsenko']
11
+ spec.email = ['admin@bestweb.com.ua']
12
+
13
+ spec.summary = %(truemail-rspec)
14
+ spec.description = %(Truemail RSpec helpers)
15
+
16
+ spec.homepage = 'https://github.com/truemail-rb/truemail-rspec'
17
+ spec.license = 'MIT'
18
+
19
+ spec.required_ruby_version = '>= 2.5.0'
20
+
21
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
+ spec.bindir = 'exe'
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ['lib']
25
+
26
+ spec.add_development_dependency 'bundle-audit', '~> 0.1.0'
27
+ spec.add_development_dependency 'bundler', '~> 1.16'
28
+ spec.add_development_dependency 'fasterer', '~> 0.8.0'
29
+ spec.add_development_dependency 'ffaker', '~> 2.13'
30
+ spec.add_development_dependency 'overcommit', '~> 0.51.0'
31
+ spec.add_development_dependency 'pry-byebug', '~> 3.7'
32
+ spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.1'
33
+ spec.add_development_dependency 'reek', '~> 5.5'
34
+ spec.add_development_dependency 'rspec', '~> 3.9'
35
+ spec.add_development_dependency 'rubocop', '~> 0.76.0'
36
+ spec.add_development_dependency 'rubocop-performance', '~> 1.5', '>= 1.5.1'
37
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.36'
38
+ spec.add_development_dependency 'simplecov', '~> 0.17.1'
39
+ spec.add_runtime_dependency 'rspec', '~> 3.0'
40
+ spec.add_runtime_dependency 'truemail', '~> 1.4'
41
+ end
metadata ADDED
@@ -0,0 +1,291 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: truemail-rspec
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Vladislav Trotsenko
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-11-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundle-audit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.0
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.16'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.16'
41
+ - !ruby/object:Gem::Dependency
42
+ name: fasterer
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.8.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.8.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: ffaker
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.13'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.13'
69
+ - !ruby/object:Gem::Dependency
70
+ name: overcommit
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.51.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.51.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry-byebug
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.7'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.7'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '13.0'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 13.0.1
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: '13.0'
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 13.0.1
117
+ - !ruby/object:Gem::Dependency
118
+ name: reek
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '5.5'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '5.5'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rspec
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '3.9'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '3.9'
145
+ - !ruby/object:Gem::Dependency
146
+ name: rubocop
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: 0.76.0
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: 0.76.0
159
+ - !ruby/object:Gem::Dependency
160
+ name: rubocop-performance
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '1.5'
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: 1.5.1
169
+ type: :development
170
+ prerelease: false
171
+ version_requirements: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: '1.5'
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: 1.5.1
179
+ - !ruby/object:Gem::Dependency
180
+ name: rubocop-rspec
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '1.36'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '1.36'
193
+ - !ruby/object:Gem::Dependency
194
+ name: simplecov
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: 0.17.1
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - "~>"
205
+ - !ruby/object:Gem::Version
206
+ version: 0.17.1
207
+ - !ruby/object:Gem::Dependency
208
+ name: rspec
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: '3.0'
214
+ type: :runtime
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - "~>"
219
+ - !ruby/object:Gem::Version
220
+ version: '3.0'
221
+ - !ruby/object:Gem::Dependency
222
+ name: truemail
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: '1.4'
228
+ type: :runtime
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - "~>"
233
+ - !ruby/object:Gem::Version
234
+ version: '1.4'
235
+ description: Truemail RSpec helpers
236
+ email:
237
+ - admin@bestweb.com.ua
238
+ executables: []
239
+ extensions: []
240
+ extra_rdoc_files: []
241
+ files:
242
+ - ".circleci/config.yml"
243
+ - ".github/ISSUE_TEMPLATE.md"
244
+ - ".github/PULL_REQUEST_TEMPLATE.md"
245
+ - ".gitignore"
246
+ - ".overcommit.yml"
247
+ - ".reek.yml"
248
+ - ".rspec"
249
+ - ".rubocop.yml"
250
+ - ".ruby-gemset"
251
+ - ".ruby-version"
252
+ - CHANGELOG.md
253
+ - CODE_OF_CONDUCT.md
254
+ - CONTRIBUTING.md
255
+ - Gemfile
256
+ - Gemfile.lock
257
+ - LICENSE.txt
258
+ - README.md
259
+ - Rakefile
260
+ - bin/console
261
+ - bin/setup
262
+ - lib/truemail/rspec.rb
263
+ - lib/truemail/rspec/configuration_helper.rb
264
+ - lib/truemail/rspec/validator_helper.rb
265
+ - lib/truemail/rspec/version.rb
266
+ - truemail-rspec.gemspec
267
+ homepage: https://github.com/truemail-rb/truemail-rspec
268
+ licenses:
269
+ - MIT
270
+ metadata: {}
271
+ post_install_message:
272
+ rdoc_options: []
273
+ require_paths:
274
+ - lib
275
+ required_ruby_version: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - ">="
278
+ - !ruby/object:Gem::Version
279
+ version: 2.5.0
280
+ required_rubygems_version: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ">="
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ requirements: []
286
+ rubyforge_project:
287
+ rubygems_version: 2.7.9
288
+ signing_key:
289
+ specification_version: 4
290
+ summary: truemail-rspec
291
+ test_files: []