manamana 0.0.1
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.
- data/.gitignore +17 -0
- data/.rvmrc +16 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +150 -0
- data/Rakefile +2 -0
- data/lib/manamana.rb +5 -0
- data/lib/manamana/version.rb +3 -0
- data/manamana.gemspec +17 -0
- metadata +56 -0
data/.gitignore
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
ruby_string="ruby-1.9.3"
|
4
|
+
gemset_name="manamana"
|
5
|
+
|
6
|
+
if rvm list strings | grep -q "${ruby_string}" ; then
|
7
|
+
|
8
|
+
# Load or create the specified gemset
|
9
|
+
rvm use "${ruby_string}@${gemset_name}" --create
|
10
|
+
|
11
|
+
else
|
12
|
+
|
13
|
+
# Notify the user to install the desired interpreter before proceeding.
|
14
|
+
echo "${ruby_string} was not found, please run 'rvm install ${ruby_string}' and then cd back into the project directory."
|
15
|
+
|
16
|
+
fi
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Mark Maglana
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
# ManaMana Framework
|
2
|
+
|
3
|
+
Organize your project's requirements and their associated test cases in a way that makes sense to your organization. Then keep track of the status of each as your project progresses.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Install the gem:
|
8
|
+
|
9
|
+
$ gem install manamana
|
10
|
+
|
11
|
+
Use the `mana` command to generate a new project:
|
12
|
+
|
13
|
+
$ mana create my_project
|
14
|
+
|
15
|
+
This will create a directory named `my_project` containing the following items:
|
16
|
+
|
17
|
+
* `requirements/` - Contains your project's requirements
|
18
|
+
* `test_cases/` - Contains your project's test cases
|
19
|
+
* `lib/stepdefs/` - Contains definitions for steps that are used by test cases
|
20
|
+
* `lib/helpers/` - Contains helper methods that can be used in test cases and stepdefs
|
21
|
+
|
22
|
+
## Usage
|
23
|
+
|
24
|
+
**Step 1: Write Requirements**
|
25
|
+
|
26
|
+
Writes a requirements file using the Requirements Syntax and save it under the `requirements/` directory. For example:
|
27
|
+
|
28
|
+
```
|
29
|
+
Create Tickets
|
30
|
+
==============
|
31
|
+
As a member of a software development team
|
32
|
+
I want to create tickets
|
33
|
+
So that I can track the bugs in our project
|
34
|
+
|
35
|
+
* Newly created tickets have a status of 'Open'
|
36
|
+
|
37
|
+
* A <Role> <Can or Cannot Create> support tickets
|
38
|
+
|
39
|
+
Examples:
|
40
|
+
| Role | Can or Cannot Create |
|
41
|
+
|---------|----------------------|
|
42
|
+
| Manager | Can Create |
|
43
|
+
| Member | Can Create |
|
44
|
+
| Guest | Cannot Create |
|
45
|
+
|
46
|
+
Notes:
|
47
|
+
Arbitrary text that the business analyst or domain expert
|
48
|
+
thinks might help the development team understand the
|
49
|
+
problem much better. Blah blah blah.
|
50
|
+
```
|
51
|
+
|
52
|
+
Notes about the syntax:
|
53
|
+
|
54
|
+
* Text underlined by `=` characters serve as the 'group name' for the requirements that follow it
|
55
|
+
* Text that begin with an asterisk `*` are considered requirements
|
56
|
+
* Requirements can wrap to the next line. The end of a requirement spec is marked by two newline characters.
|
57
|
+
* The keywords `Examples:` and `Notes:` are not really keywords. They're just optional arbitrary text that the writer can add for clarity. The compiler will ignore them.
|
58
|
+
* Tables may or may not have borders. In the above, the border below the header row may be safely ommitted.
|
59
|
+
* Notice that there are no word-like keywords in the above syntax making it il8n-ready at the onset.
|
60
|
+
* The requirements file can be any text file but the convention is to use the .requirements file extension
|
61
|
+
|
62
|
+
**Step 2: Write Test Cases**
|
63
|
+
|
64
|
+
Write test cases for each requirement using the Test Case Syntax and save each as a file under the `test_cases/` directory. For example:
|
65
|
+
|
66
|
+
```
|
67
|
+
Test Case:
|
68
|
+
A (.+) can create support tickets
|
69
|
+
|
70
|
+
Variables:
|
71
|
+
* Role Name = $1
|
72
|
+
* My Username = "norm"
|
73
|
+
* My Password = "123qwe"
|
74
|
+
|
75
|
+
Setup:
|
76
|
+
* An account with username <My Username> and password <My Password> exists
|
77
|
+
* The account with username <My Username> has a role of <Role Name>
|
78
|
+
* I am logged out
|
79
|
+
|
80
|
+
Teardown:
|
81
|
+
* Delete the account with username <My Username> at exit
|
82
|
+
|
83
|
+
Script:
|
84
|
+
* Visit the Login page
|
85
|
+
* Fill in the Username field with <My Username>
|
86
|
+
* Fill in the Password field with <My Password>
|
87
|
+
* Click the Login button
|
88
|
+
* The New Ticket button should be enabled
|
89
|
+
```
|
90
|
+
|
91
|
+
Notes:
|
92
|
+
|
93
|
+
* The test case name can be a string or a regexp pattern
|
94
|
+
* The test case file can be any text file but the convention is to use the .test_case file extension
|
95
|
+
* Organizing test cases into subfolders under the `test_cases/` directory is recommended. (e.g. `test_cases/create_tickets/`)
|
96
|
+
|
97
|
+
**Step 3: Define re-usable steps**
|
98
|
+
|
99
|
+
Writes the equivalent Ruby code for the steps used in the test cases. For example:
|
100
|
+
|
101
|
+
```
|
102
|
+
step /^Visit the (.+) page$/i do |page_name|
|
103
|
+
# Add Ruby code here
|
104
|
+
end
|
105
|
+
|
106
|
+
step /^Fill in the (.+) field with (.+)$/i do |field_name, value|
|
107
|
+
# Add Ruby code here
|
108
|
+
end
|
109
|
+
|
110
|
+
step /^Click the (.+) button$/i do |button_name|
|
111
|
+
# Add Ruby code here
|
112
|
+
end
|
113
|
+
```
|
114
|
+
|
115
|
+
**Step 4: Run it!**
|
116
|
+
|
117
|
+
Run `mana start` to execute the tests and validate the requirements:
|
118
|
+
|
119
|
+
```
|
120
|
+
$ mana start
|
121
|
+
Run options: --seed 51346
|
122
|
+
# Running tests:
|
123
|
+
|
124
|
+
Create Tickets
|
125
|
+
==============
|
126
|
+
As a member of a software development team
|
127
|
+
I want to create tickets
|
128
|
+
So that I can track the bugs in our project
|
129
|
+
|
130
|
+
* Newly created tickets have a status of 'Open' PASSED
|
131
|
+
|
132
|
+
* A <Role> <Can or Cannot Create> support tickets
|
133
|
+
|
134
|
+
Examples:
|
135
|
+
| Role | Can or Cannot Create |
|
136
|
+
|---------|----------------------|
|
137
|
+
| Manager | Can Create | PASSED
|
138
|
+
| Member | Can Create | PASSED
|
139
|
+
| Guest | Cannot Create | FAILED
|
140
|
+
|
141
|
+
Notes:
|
142
|
+
Arbitrary text that the business analyst or domain expert
|
143
|
+
thinks might help the development team understand the
|
144
|
+
problem much better. Blah blah blah.
|
145
|
+
|
146
|
+
|
147
|
+
Finished tests in 0.004842s, 1445.6836 tests/s, 826.1049 assertions/s.
|
148
|
+
|
149
|
+
7 tests, 4 assertions, 0 failures, 0 errors, 0 skips
|
150
|
+
```
|
data/Rakefile
ADDED
data/lib/manamana.rb
ADDED
data/manamana.gemspec
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/manamana/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["Mark Maglana"]
|
6
|
+
gem.email = ["mmaglana@gmail.com"]
|
7
|
+
gem.description = %q{Capture project requirements better}
|
8
|
+
gem.summary = %q{Organize your project's requirements and their associated test cases in a way that makes sense to your organization. Then keep track of the status of each as your project progresses.}
|
9
|
+
gem.homepage = "https://github.com/relaxdiego/manamana"
|
10
|
+
|
11
|
+
gem.files = `git ls-files`.split($\)
|
12
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
+
gem.name = "manamana"
|
15
|
+
gem.require_paths = ["lib"]
|
16
|
+
gem.version = Manamana::VERSION
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: manamana
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Mark Maglana
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-03-08 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Capture project requirements better
|
15
|
+
email:
|
16
|
+
- mmaglana@gmail.com
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- .gitignore
|
22
|
+
- .rvmrc
|
23
|
+
- Gemfile
|
24
|
+
- LICENSE
|
25
|
+
- README.md
|
26
|
+
- Rakefile
|
27
|
+
- lib/manamana.rb
|
28
|
+
- lib/manamana/version.rb
|
29
|
+
- manamana.gemspec
|
30
|
+
homepage: https://github.com/relaxdiego/manamana
|
31
|
+
licenses: []
|
32
|
+
post_install_message:
|
33
|
+
rdoc_options: []
|
34
|
+
require_paths:
|
35
|
+
- lib
|
36
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ! '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
requirements: []
|
49
|
+
rubyforge_project:
|
50
|
+
rubygems_version: 1.8.25
|
51
|
+
signing_key:
|
52
|
+
specification_version: 3
|
53
|
+
summary: Organize your project's requirements and their associated test cases in a
|
54
|
+
way that makes sense to your organization. Then keep track of the status of each
|
55
|
+
as your project progresses.
|
56
|
+
test_files: []
|