manamana 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
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
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in manamana.gemspec
4
+ gemspec
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
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
data/lib/manamana.rb ADDED
@@ -0,0 +1,5 @@
1
+ require "manamana/version"
2
+
3
+ module Manamana
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,3 @@
1
+ module Manamana
2
+ VERSION = "0.0.1"
3
+ end
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: []