mackarel 0.3.1 → 0.4.0
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/.gitignore +1 -0
- data/README.md +97 -4
- data/lib/mackarel/capybara.rb +0 -1
- data/lib/mackarel/core.rb +23 -14
- data/lib/mackarel/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba8d3cddea2ae2293a123036d42f174ee25aeb69
|
4
|
+
data.tar.gz: ca4e02890c971a163a268c97584c5b084581835f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0d72af7c7de0dc816758a57b8a17cdbf342de2313293ad61c62052dd12d30b0f0df9c3050d129f34ce440e36ed7a53e3730f61197dd24ed8fd29a5e154995fc
|
7
|
+
data.tar.gz: cac06af1748818c04fe572736e04b886854eb53ccc792d7efa21e4fc863f747681a7a7d767820cecbd0901644612b8b0bdc8f1f939f9a0594410441c11c67614
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -18,15 +18,23 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
$ gem install mackarel
|
20
20
|
|
21
|
-
In your spec/spec_helper.rb file add
|
21
|
+
In your `spec/spec_helper.rb` or `spec/rails_helper.rb` file add:
|
22
22
|
|
23
23
|
```ruby
|
24
|
-
config.include Mackarel
|
24
|
+
RSpec.configure { |c| config.include Mackarel }
|
25
|
+
```
|
26
|
+
|
27
|
+
If you want to use [FactoryGirl](https://github.com/thoughtbot/factory_girl) as the backend for creating assets, add also:
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
Mackarel.config { |c| c.factory = FactoryGirl }
|
25
31
|
```
|
26
32
|
|
27
33
|
## Usage
|
28
34
|
|
29
|
-
Mackarel allows you to write acceptance tests in Rails in a readable way without having to deal with things like Cucumber.
|
35
|
+
Mackarel allows you to write acceptance tests in Rails in a readable way without having to deal with things like Cucumber.
|
36
|
+
|
37
|
+
It uses feature tests with RSpec. It can use Factorygirl as the factory for models, and Capybara for website testing.
|
30
38
|
|
31
39
|
You can do things like:
|
32
40
|
|
@@ -50,7 +58,92 @@ RSpec.feature "Visiting the homepage" do
|
|
50
58
|
end
|
51
59
|
```
|
52
60
|
|
53
|
-
###
|
61
|
+
### What are all the things I can do?
|
62
|
+
|
63
|
+
#### Yielding
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
given {}
|
67
|
+
when_i {}
|
68
|
+
and_also {}
|
69
|
+
and_i {}
|
70
|
+
then_i {}
|
71
|
+
```
|
72
|
+
|
73
|
+
These just yield. They are used to increase readibility:
|
74
|
+
|
75
|
+
```ruby
|
76
|
+
RSpec.feature "Visiting admin page" do
|
77
|
+
scenario "It authenticates" do
|
78
|
+
given { username = "user" }
|
79
|
+
and_also { pass = "pass" }
|
80
|
+
|
81
|
+
when_i { visit admin_page_path }
|
82
|
+
and_i { login_with(username, pass) }
|
83
|
+
|
84
|
+
then_i { expect(page).to have_http_status(200) }
|
85
|
+
end
|
86
|
+
end
|
87
|
+
```
|
88
|
+
|
89
|
+
#### Create objects
|
90
|
+
|
91
|
+
```ruby
|
92
|
+
create(what, *args, **kwargs, &blk)
|
93
|
+
when_there_exists_a(what, *args, **kwargs, &blk)
|
94
|
+
when_there_exists_an(what, *args, **kwargs, &blk)
|
95
|
+
and_there_exists_a(what, *args, **kwargs, &blk)
|
96
|
+
and_there_exists_an(what, *args, **kwargs, &blk)
|
97
|
+
```
|
98
|
+
|
99
|
+
These generate objects. By default, they use `Mackarel::BasicFactory`
|
100
|
+
to do so, but you can change that to use Factorygirl with
|
101
|
+
`Mackarel.config.factory = Mackarel::FactoryGirl`, or create your own. See later in this README to see how.
|
102
|
+
|
103
|
+
|
104
|
+
Create and friends figure out what you want to call the created
|
105
|
+
object: by default, it uses the "what", by converting it to a string,
|
106
|
+
downcasing it, and "underscore-ing" it. Also, l You can pass option
|
107
|
+
`called:` to change that name. They also return the created object. If
|
108
|
+
you pass `called: nil`, they don't create any instance variable.
|
109
|
+
|
110
|
+
The `what`, `*args` and `*kwargs` are passed as is to the factory.
|
111
|
+
|
112
|
+
For example:
|
113
|
+
```
|
114
|
+
RSpec.feature "Visiting widget page" do
|
115
|
+
scenario "lists all widgets" do
|
116
|
+
when_i { create Widget, name: "first" }
|
117
|
+
and_there_exist_a Widget, name: "second"
|
118
|
+
|
119
|
+
and_i { visit admin_page_path }
|
120
|
+
|
121
|
+
then_i { can_see "first" }
|
122
|
+
and_i { can_see "second" }
|
123
|
+
end
|
124
|
+
end
|
125
|
+
```
|
126
|
+
|
127
|
+
#### Create lists
|
128
|
+
```ruby
|
129
|
+
create_a_list_of(n, what, *args, **kwargs, &blk)
|
130
|
+
and_there_exist(n, what, *args, **kwargs, &blk)
|
131
|
+
when_there_exist(n, what, *args, **kwargs, &blk)
|
132
|
+
```
|
133
|
+
|
134
|
+
You can also generate lists of objects with one call. To do that, use `create_a_list_of` or one of its aliases. Pass how many objects you want in the list as the first parameter:
|
135
|
+
|
136
|
+
```
|
137
|
+
RSpec.feature "Visiting widget page" do
|
138
|
+
scenario "lists all widgets" do
|
139
|
+
when_there_exist 5, Widget, name: "widget"
|
140
|
+
and_i { visit admin_page_path }
|
141
|
+
|
142
|
+
i_find ".widget", count: 5
|
143
|
+
end
|
144
|
+
end
|
145
|
+
```
|
146
|
+
|
54
147
|
|
55
148
|
## Development
|
56
149
|
|
data/lib/mackarel/capybara.rb
CHANGED
data/lib/mackarel/core.rb
CHANGED
@@ -4,33 +4,42 @@ module Mackarel
|
|
4
4
|
yield
|
5
5
|
end
|
6
6
|
|
7
|
-
def
|
8
|
-
Mackarel.config.factory
|
9
|
-
end
|
10
|
-
|
11
|
-
def when_there_exists_a(what, *args, **options)
|
12
|
-
called = options.delete(:called) || what.to_s.underscore.tr("/", "_")
|
7
|
+
def create_a(what, *args, called: what, **options)
|
13
8
|
asset = factory.create(what, *args, **options)
|
14
|
-
|
9
|
+
if called
|
10
|
+
called = called.to_s.underscore.tr("/", "_")
|
11
|
+
instance_variable_set("@#{called}", asset)
|
12
|
+
end
|
15
13
|
yield(asset) if block_given?
|
14
|
+
asset
|
16
15
|
end
|
17
16
|
|
18
|
-
def
|
19
|
-
called = options.delete(:called) || "#{what.to_s.underscore.tr("/", "_")}_list"
|
17
|
+
def create_a_list_of(number, what, *args, called: "#{what}_list", **options)
|
20
18
|
asset = factory.create_list(what, number, *args, **options)
|
21
|
-
|
19
|
+
if called
|
20
|
+
called = called.underscore.tr("/", "_")
|
21
|
+
instance_variable_set("@#{called}", asset)
|
22
|
+
end
|
22
23
|
yield(asset) if block_given?
|
24
|
+
asset
|
25
|
+
end
|
26
|
+
|
27
|
+
def factory
|
28
|
+
Mackarel.config.factory
|
23
29
|
end
|
24
30
|
|
25
31
|
alias and_i when_i
|
26
32
|
alias and_also when_i
|
27
33
|
alias given when_i
|
34
|
+
alias then_i when_i
|
28
35
|
|
29
|
-
alias
|
30
|
-
alias
|
31
|
-
alias
|
36
|
+
alias when_there_exists_a create_a
|
37
|
+
alias when_there_exists_an create_a
|
38
|
+
alias and_there_exists_a create_a
|
39
|
+
alias and_there_exists_an create_a
|
32
40
|
|
33
|
-
alias and_there_exist
|
41
|
+
alias and_there_exist create_a_list_of
|
42
|
+
alias when_there_exist create_a_list_of
|
34
43
|
|
35
44
|
end
|
36
45
|
end
|
data/lib/mackarel/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mackarel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paolo Gianrossi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|