├── .gitignore
├── Contents.md
├── Future.md
├── Gemfile
├── Gemfile.lock
├── Gemfile.md
├── LICENSE
├── README.md
├── Rakefile
├── Rakefile.md
├── Watchwords.md
├── examples
├── Examples.md
├── changes_report
│ ├── ChangesReport.html
│ ├── ChangesReport.md
│ ├── Rakefile
│ └── example_test.rb
├── github
│ ├── Rakefile
│ ├── TesterTour.md
│ ├── api
│ │ ├── api_client.rb
│ │ ├── base_classes
│ │ │ └── base_class_for_endpoint.rb
│ │ └── endpoints
│ │ │ ├── get_rate_limit.rb
│ │ │ └── labels
│ │ │ ├── delete_labels_name.rb
│ │ │ ├── get_labels.rb
│ │ │ ├── get_labels_name.rb
│ │ │ ├── patch_labels_name.rb
│ │ │ └── post_labels.rb
│ ├── base_classes
│ │ ├── base_class_for_resource.rb
│ │ └── base_class_for_test.rb
│ ├── data
│ │ ├── label.rb
│ │ └── rate_limit.rb
│ ├── tester_tour
│ │ ├── md_files
│ │ │ ├── Crud.md
│ │ │ ├── DataObjects.md
│ │ │ ├── DeleteLabelsName.md
│ │ │ ├── EndpointObjects.md
│ │ │ ├── EndpointTests.md
│ │ │ ├── Existence.md
│ │ │ ├── FlatDataEqual.md
│ │ │ ├── FlatDataLog.md
│ │ │ ├── FlatDataNew.md
│ │ │ ├── FlatDataValid.md
│ │ │ ├── GetLabels.md
│ │ │ ├── GetLabelsName.md
│ │ │ ├── Getters.md
│ │ │ ├── Meet.md
│ │ │ ├── MoreToCome.md
│ │ │ ├── NestedDataEqual.md
│ │ │ ├── NestedDataLog.md
│ │ │ ├── NestedDataNew.md
│ │ │ ├── NestedDataNew2.md
│ │ │ ├── NestedDataValid.md
│ │ │ ├── Overview.md
│ │ │ ├── PatchLabelsName.md
│ │ │ ├── PostLabels.md
│ │ │ ├── RescuedException.md
│ │ │ ├── ResourceMethods.md
│ │ │ ├── RestApi.md
│ │ │ ├── Sections.md
│ │ │ ├── UnrescuedException.md
│ │ │ ├── Verdicts.md
│ │ │ └── WebUi.md
│ │ ├── md_templates
│ │ │ ├── Crud.txt
│ │ │ ├── DataObjects.txt
│ │ │ ├── DeleteLabelsName.txt
│ │ │ ├── EndpointObjects.txt
│ │ │ ├── EndpointTests.txt
│ │ │ ├── Existence.txt
│ │ │ ├── FlatDataEqual.txt
│ │ │ ├── FlatDataLog.txt
│ │ │ ├── FlatDataNew.txt
│ │ │ ├── FlatDataValid.txt
│ │ │ ├── GetLabels.txt
│ │ │ ├── GetLabelsName.txt
│ │ │ ├── Getters.txt
│ │ │ ├── Meet.txt
│ │ │ ├── MoreToCome.txt
│ │ │ ├── NestedDataEqual.txt
│ │ │ ├── NestedDataLog.txt
│ │ │ ├── NestedDataNew.txt
│ │ │ ├── NestedDataNew2.txt
│ │ │ ├── NestedDataValid.txt
│ │ │ ├── Overview.txt
│ │ │ ├── PatchLabelsName.txt
│ │ │ ├── PostLabels.txt
│ │ │ ├── RescuedException.txt
│ │ │ ├── ResourceMethods.txt
│ │ │ ├── RestApi.txt
│ │ │ ├── Sections.txt
│ │ │ ├── UnrescuedException.txt
│ │ │ ├── Verdicts.txt
│ │ │ └── WebUi.txt
│ │ └── tests
│ │ │ ├── crud_test.rb
│ │ │ ├── delete_labels_name_test.rb
│ │ │ ├── existence_test.rb
│ │ │ ├── flat_data_equal_test.rb
│ │ │ ├── flat_data_log_test.rb
│ │ │ ├── flat_data_new_test.rb
│ │ │ ├── flat_data_valid_test.rb
│ │ │ ├── get_labels_name_test.rb
│ │ │ ├── get_labels_test.rb
│ │ │ ├── getters_test.rb
│ │ │ ├── meet_test.rb
│ │ │ ├── nested_data_equal_test.rb
│ │ │ ├── nested_data_log_test.rb
│ │ │ ├── nested_data_new_2_test.rb
│ │ │ ├── nested_data_new_test.rb
│ │ │ ├── nested_data_valid_test.rb
│ │ │ ├── patch_labels_name_test.rb
│ │ │ ├── post_labels_test.rb
│ │ │ ├── rescued_exception_test.rb
│ │ │ ├── rest_api_test.rb
│ │ │ ├── sections_test.rb
│ │ │ ├── unrescued_exception_test.rb
│ │ │ ├── verdicts_test.rb
│ │ │ └── web_ui_test.rb
│ └── ui
│ │ ├── base_classes
│ │ └── base_class_for_page.rb
│ │ ├── pages
│ │ ├── home_page.rb
│ │ ├── labels_page.rb
│ │ ├── login_page.rb
│ │ └── repo_page.rb
│ │ └── ui_client.rb
├── github_api
│ ├── Moved.md
│ └── TesterTour.md
├── log
│ ├── Log.md
│ ├── Rakefile
│ └── log_examples.rb
└── rest_api
│ ├── Rakefile
│ ├── RestAPI.md
│ ├── base_classes
│ ├── base_class_for_endpoint.rb
│ ├── base_class_for_resource.rb
│ ├── base_class_for_test.rb
│ └── endpoints
│ │ ├── base_class_for_delete_id.rb
│ │ ├── base_class_for_get.rb
│ │ ├── base_class_for_get_id.rb
│ │ ├── base_class_for_post.rb
│ │ └── base_class_for_put_id.rb
│ ├── data
│ ├── album.rb
│ ├── comment.rb
│ ├── photo.rb
│ ├── post.rb
│ ├── todo.rb
│ └── user.rb
│ ├── endpoints
│ ├── albums
│ │ ├── delete_albums_id.rb
│ │ ├── get_albums.rb
│ │ ├── get_albums_id.rb
│ │ ├── post_albums.rb
│ │ └── put_albums_id.rb
│ ├── comments
│ │ ├── delete_comments_id.rb
│ │ ├── get_comments.rb
│ │ ├── get_comments_id.rb
│ │ ├── post_comments.rb
│ │ └── put_comments_id.rb
│ ├── photos
│ │ ├── delete_photos_id.rb
│ │ ├── get_photos.rb
│ │ ├── get_photos_id.rb
│ │ ├── post_photos.rb
│ │ └── put_photos_id.rb
│ ├── posts
│ │ ├── delete_posts_id.rb
│ │ ├── get_posts.rb
│ │ ├── get_posts_id.rb
│ │ ├── post_posts.rb
│ │ └── put_posts_id.rb
│ ├── todos
│ │ ├── delete_todos_id.rb
│ │ ├── get_todos.rb
│ │ ├── get_todos_id.rb
│ │ ├── post_todos.rb
│ │ └── put_todos_id.rb
│ └── users
│ │ ├── delete_users_id.rb
│ │ ├── get_users.rb
│ │ ├── get_users_id.rb
│ │ ├── post_users.rb
│ │ └── put_users_id.rb
│ ├── example_rest_client.rb
│ └── tests
│ ├── albums_test.rb
│ ├── comments_test.rb
│ ├── photos_test.rb
│ ├── posts_test.rb
│ ├── todos_test.rb
│ └── users_test.rb
├── lib
├── Lib.md
├── base_classes
│ ├── BaseClasses.md
│ ├── base_class.rb
│ └── base_class_for_data.rb
├── changes_report.rb
├── configuration.rb
├── helpers
│ ├── Helpers.md
│ ├── debug_helper.rb
│ ├── hash_helper.rb
│ ├── lorem_helper.rb
│ ├── markdown_helper.rb
│ ├── object_helper.rb
│ ├── set_helper.rb
│ ├── string_helper.rb
│ ├── test_helper.rb
│ ├── time_helper.rb
│ └── values_helper.rb
└── log
│ ├── Log.md
│ ├── constants.rb
│ ├── log.rb
│ ├── verdict_assertion.rb
│ ├── verdict_boolean.rb
│ ├── verdict_integer.rb
│ ├── verdict_range.rb
│ └── verdict_string.rb
├── rakefiles
├── build.rake
├── examples.rake
└── test.rake
└── test
├── Test.md
├── assertion_helper.rb
├── common_requires.rb
├── configuration_test.rb
├── helpers
├── debug_helper_test.rb
├── hash_helper_test.rb
├── set_helper_test.rb
├── string_helper_test.rb
└── values_helper_test.rb
└── log_test.rb
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | html/
3 | output/
4 |
5 |
--------------------------------------------------------------------------------
/Contents.md:
--------------------------------------------------------------------------------
1 | # Contents (Markdown Pages)
2 |
3 | - [RubyTest](./README.md#rubytest)
4 | - [Watchwords](./Watchwords.md#watchwords)
5 | - [Future](./Future.md#future)
6 | - [Rakefile](./Rakefile.md#rakefile)
7 | - [Gemfile](./Gemfile.md#gemfile)
8 | - examples/
9 | - [Examples](./examples/Examples.md#examples)
10 | - changes_report/
11 | - [Changes Report](./examples/changes_report/ChangesReport.md#changes-report)
12 | - github/
13 | - [Tester Tour](./examples/github/TesterTour.md#tester-tour)
14 | - github_api/
15 | - [Moved](./examples/github_api/Moved.md#moved)
16 | - [Tester Tour](./examples/github_api/TesterTour.md#tester-tour)
17 | - log/
18 | - [Log Examples](./examples/log/Log.md#log-examples)
19 | - rest_api/
20 | - [REST API Test Example](./examples/rest_api/RestAPI.md#rest-api-test-example)
21 | - lib/
22 | - [Lib](./lib/Lib.md#lib)
23 | - base_classes/
24 | - [Base Classes](./lib/base_classes/BaseClasses.md#base-classes)
25 | - helpers/
26 | - [Helpers](./lib/helpers/Helpers.md#helpers)
27 | - log/
28 | - [Log](./lib/log/Log.md#log)
29 | - test/
30 | - [Unit Tests](./test/Test.md#unit-tests)
31 |
--------------------------------------------------------------------------------
/Future.md:
--------------------------------------------------------------------------------
1 | # Future
2 |
3 | Here are possible future enhancements of RubyTest (in no particular order).
4 |
5 | To comment on these, or possibilities, please open an Issue.
6 |
7 | ## Support for Testing a Web Application (via gem watir-webdriver)
8 |
9 | ### Example
10 |
11 | A large-scale example that tests a web application using Ruby gem watir-webdriver
.
12 |
13 | ## Support for Testing a SOAP API (via gem Savon)
14 |
15 | ### Example
16 |
17 | A large-scale example that tests a SOAP API using Ruby gem Savon
.
18 |
19 | ## Reporting
20 |
21 | ### History Report (Spreadsheet)
22 |
23 | History of each verdict's passed/failed/blocked status.
24 |
25 | ### Notifications
26 |
27 | Code to perform notifications: email, RSS feeds, Skype, etc.
28 |
29 | ## New/Enhanced Helpers
30 |
31 | Methods to make code clearer, cleaner, and more reliable.
32 |
33 | ### Array Helper
34 |
35 | ### Date Helper
36 |
37 | ### Debug Helper
38 |
39 | ### Hash Helper
40 |
41 | ### Lorem Helper
42 |
43 | ### Object helper
44 |
45 | ### Path Helper
46 |
47 | ### Set Helper
48 |
49 | ### String Helper
50 |
51 | ### Test Helper
52 |
53 | ### Tk Helper
54 |
55 | ### Values Helper
56 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'http://rubygems.org'
2 |
3 | gem 'bundler', '1.14.6'
4 |
5 | gem 'contracts', '0.16.0'
6 |
7 | gem 'json', '1.8.1'
8 |
9 | gem 'lorem-ipsum', '0.1.1'
10 |
11 | gem 'minitest', '5.10.1'
12 |
13 | gem 'nokogiri', '1.6.7.2'
14 |
15 | gem 'rest-client', '2.0.1'
16 |
17 | gem 'retriable', '3.0.1'
18 |
19 | gem 'watir', '6.10.0'
20 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: http://rubygems.org/
3 | specs:
4 | childprocess (0.8.0)
5 | ffi (~> 1.0, >= 1.0.11)
6 | contracts (0.16.0)
7 | domain_name (0.5.20170404)
8 | unf (>= 0.0.5, < 1.0.0)
9 | ffi (1.9.18-x64-mingw32)
10 | ffi (1.9.18-x86-mingw32)
11 | http-cookie (1.0.3)
12 | domain_name (~> 0.5)
13 | json (1.8.1)
14 | lorem-ipsum (0.1.1)
15 | mime-types (3.1)
16 | mime-types-data (~> 3.2015)
17 | mime-types-data (3.2016.0521)
18 | mini_portile2 (2.0.0)
19 | minitest (5.10.1)
20 | netrc (0.11.0)
21 | nokogiri (1.6.7.2-x64-mingw32)
22 | mini_portile2 (~> 2.0.0.rc2)
23 | nokogiri (1.6.7.2-x86-mingw32)
24 | mini_portile2 (~> 2.0.0.rc2)
25 | rest-client (2.0.1-x64-mingw32)
26 | ffi (~> 1.9)
27 | http-cookie (>= 1.0.2, < 2.0)
28 | mime-types (>= 1.16, < 4.0)
29 | netrc (~> 0.8)
30 | rest-client (2.0.1-x86-mingw32)
31 | ffi (~> 1.9)
32 | http-cookie (>= 1.0.2, < 2.0)
33 | mime-types (>= 1.16, < 4.0)
34 | netrc (~> 0.8)
35 | retriable (3.0.1)
36 | rubyzip (1.2.1)
37 | selenium-webdriver (3.8.0)
38 | childprocess (~> 0.5)
39 | rubyzip (~> 1.0)
40 | unf (0.1.4)
41 | unf_ext
42 | unf_ext (0.0.7.4-x64-mingw32)
43 | unf_ext (0.0.7.4-x86-mingw32)
44 | watir (6.10.0)
45 | selenium-webdriver (~> 3.4, >= 3.4.1)
46 |
47 | PLATFORMS
48 | x64-mingw32
49 | x86-mingw32
50 |
51 | DEPENDENCIES
52 | bundler (= 1.14.6)
53 | contracts (= 0.16.0)
54 | json (= 1.8.1)
55 | lorem-ipsum (= 0.1.1)
56 | minitest (= 5.10.1)
57 | nokogiri (= 1.6.7.2)
58 | rest-client (= 2.0.1)
59 | retriable (= 3.0.1)
60 | watir (= 6.10.0)
61 |
62 | BUNDLED WITH
63 | 1.14.6
64 |
--------------------------------------------------------------------------------
/Gemfile.md:
--------------------------------------------------------------------------------
1 | # Gemfile
2 |
3 | ## Gems
4 |
5 | - [bundler](https://rubygems.org/gems/bundler)
6 | - [contracts](https://rubygems.org/gems/contracts)
7 | - [json](https://rubygems.org/gems/json)
8 | - [lorem-ipsum](https://rubygems.org/gems/lorem-ipsum)
9 | - [minitest](https://rubygems.org/gems/minitest)
10 | - [nokogiri](https://rubygems.org/gems/nokogiri)
11 | - [rest-client](https://rubygems.org/gems/rest-client)
12 | - [retriable](https://rubygems.org/gems/retriable)
13 | ## Source
14 |
15 | - [Gemfile](Gemfile)
16 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # RubyTest
2 |
3 | It's all well and good to _write_ about testing software. (Actually I _do_ write about it, over at [my blog](https://burdettelamar.wordpress.com/).)
4 |
5 | But it's so much better to _show_ actual working code. And that's what this project does.
6 |
7 | It provides _working software_ to help with automated software testing.
8 |
9 | The project consists of examples, the framework that supports them, and of course testing for the framework.
10 |
11 | Links to the markdown documentation are at:
12 |
13 | - [Contents](./Contents.md#contents-markdown-pages)
14 |
15 | ## Examples
16 |
17 | An important example is about testing for the GitHub REST API. Take the [Tester Tour](./examples/github/TesterTour.md#tester-tour).
18 |
19 | ## Framework
20 |
21 | The testing is supported by
22 |
23 | - [Robust logging](./lib/log/Log.md#log)
24 | - [Helpers](./lib/helpers/Helpers.md#helpers)
25 | - [Base classes](./lib/base_classes/BaseClasses.md#base-classes)
26 |
27 | The framework itself is tested by
28 |
29 | - [Unit testing](./test/Test.md#unit-tests)
30 |
31 | There are also
32 |
33 | - [Logging examples](./examples/log/Log.md#log-examples)
34 |
35 | ## Rake Tasks
36 |
37 | You can also review all rake tasks by running command
38 |
39 | - rake -D
40 |
41 | or by visiting the documentation for the [Rakefile](./Rakefile.md#rakefile).
42 |
43 | ## RDoc
44 |
45 | You can build the RDoc by cloning and running command
46 |
47 | - rake build:rerdoc
48 |
49 | The RDoc output will be in directory html/
, with the index file at html/index.html