nuker 0.0.47 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +7 -0
- data/.ruby-version +1 -0
- data/.rvmrc +62 -0
- data/.rvmrc.08.13.2014-14:58:37 +1 -0
- data/.travis.yml +3 -0
- data/Gemfile +4 -0
- data/LICENSE +165 -0
- data/Rakefile +5 -0
- data/bin/nuker +26 -0
- data/config.ru +2 -0
- data/example-features/generic/example-with-background.feature +11 -0
- data/example-features/generic/example-with-data-table.feature +7 -0
- data/example-features/generic/example-with-scenario-outline-examples.feature +11 -0
- data/example-features/generic/example_with_tags.feature +8 -0
- data/example-features/generic/has-lots-of-tags.feature +5 -0
- data/example-features/generic/multiple-scenarios.feature +7 -0
- data/example-features/too-many-wip-tags/too-many-wip-tags.feature +21 -0
- data/features/counts.feature +25 -0
- data/features/feature_page.feature +69 -0
- data/features/list_tags.feature +31 -0
- data/features/notifications.feature +9 -0
- data/features/progress_bar.feature +21 -0
- data/features/project_home.feature +25 -0
- data/features/projects.feature +19 -0
- data/features/push_features.feature +34 -0
- data/features/scenario_page.feature +84 -0
- data/features/search_features.feature +100 -0
- data/features/step_definitions/feature_page_steps.rb +15 -0
- data/features/step_definitions/notifications_steps.rb +11 -0
- data/features/step_definitions/project_home_steps.rb +10 -0
- data/features/step_definitions/projects_steps.rb +28 -0
- data/features/step_definitions/push_features_steps.rb +48 -0
- data/features/step_definitions/scenario_page_steps.rb +29 -0
- data/features/step_definitions/search_features_steps.rb +24 -0
- data/features/step_definitions/steps.rb +35 -0
- data/features/step_definitions/welcome_page.rb +19 -0
- data/features/support/env.rb +33 -0
- data/features/welcome_page.feature +30 -0
- data/lib/nuker/application.rb +161 -0
- data/lib/nuker/counts_tags.rb +27 -0
- data/lib/nuker/feature.rb +16 -0
- data/lib/nuker/parses_features.rb +30 -0
- data/lib/nuker/project.rb +8 -0
- data/lib/nuker/public/bootstrap.min.css +356 -0
- data/lib/nuker/public/nuker-logo.png +0 -0
- data/lib/nuker/public/scripts/projects.js +6 -0
- data/lib/nuker/public/skin.css +208 -0
- data/lib/nuker/public/wally-logo.png +0 -0
- data/lib/nuker/search_features.rb +47 -0
- data/lib/nuker/version.rb +3 -0
- data/lib/nuker/views/feature.haml +19 -0
- data/lib/nuker/views/feature_link.haml +6 -0
- data/lib/nuker/views/layout.haml +53 -0
- data/lib/nuker/views/progress.haml +15 -0
- data/lib/nuker/views/project.haml +0 -0
- data/lib/nuker/views/scenario.haml +31 -0
- data/lib/nuker/views/search.haml +36 -0
- data/lib/nuker/views/table.haml +10 -0
- data/lib/nuker/views/tag_links.haml +4 -0
- data/lib/nuker.rb +7 -0
- data/nuker.gemspec +37 -0
- data/spec/spec_helper.rb +35 -0
- metadata +88 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37ddc86185abd564059a00887d9dcc182dce589f
|
4
|
+
data.tar.gz: 57e74e0f863b22e88f2c8a7f3f39a4713ca2b50a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 836208fa7c992bb786f868cc026a9e962aae26fce8a20ffc6083f559ebd9c4d070f16262fe980cd0cb3f3f1ab36774ddc446f2cf9202803c3434a9bac608d4d8
|
7
|
+
data.tar.gz: a25d5aa3f191a94b248033fce15a987cc8b0d2487b341cefb90ce0905963d8293cd1ded0157b50845c6ab5661133ea899c1227d48ace9b760860c479c1183c35
|
data/.gitignore
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.0.0
|
data/.rvmrc
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
# This is an RVM Project .rvmrc file, used to automatically load the ruby
|
4
|
+
# development environment upon cd'ing into the directory
|
5
|
+
|
6
|
+
# First we specify our desired <ruby>[@<gemset>], the @gemset name is optional,
|
7
|
+
# Only full ruby name is supported here, for short names use:
|
8
|
+
# echo "rvm use 2.0.0" > .rvmrc
|
9
|
+
environment_id="ruby-2.0.0-p481@nuker"
|
10
|
+
|
11
|
+
# Uncomment the following lines if you want to verify rvm version per project
|
12
|
+
# rvmrc_rvm_version="1.25.28 (stable)" # 1.10.1 seems like a safe start
|
13
|
+
# eval "$(echo ${rvm_version}.${rvmrc_rvm_version} | __rvm_awk -F. '{print "[[ "$1*65536+$2*256+$3" -ge "$4*65536+$5*256+$6" ]]"}' )" || {
|
14
|
+
# echo "This .rvmrc file requires at least RVM ${rvmrc_rvm_version}, aborting loading."
|
15
|
+
# return 1
|
16
|
+
# }
|
17
|
+
|
18
|
+
# First we attempt to load the desired environment directly from the environment
|
19
|
+
# file. This is very fast and efficient compared to running through the entire
|
20
|
+
# CLI and selector. If you want feedback on which environment was used then
|
21
|
+
# insert the word 'use' after --create as this triggers verbose mode.
|
22
|
+
if [[ -d "${rvm_path:-$HOME/.rvm}/environments"
|
23
|
+
&& -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
|
24
|
+
then
|
25
|
+
\. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
|
26
|
+
for __hook in "${rvm_path:-$HOME/.rvm}/hooks/after_use"*
|
27
|
+
do
|
28
|
+
if [[ -f "${__hook}" && -x "${__hook}" && -s "${__hook}" ]]
|
29
|
+
then \. "${__hook}" || true
|
30
|
+
fi
|
31
|
+
done
|
32
|
+
unset __hook
|
33
|
+
if (( ${rvm_use_flag:=1} >= 2 )) # display only when forced
|
34
|
+
then
|
35
|
+
if [[ $- == *i* ]] # check for interactive shells
|
36
|
+
then printf "%b" "Using: $(tput setaf 2 2>/dev/null)$GEM_HOME$(tput sgr0 2>/dev/null)
|
37
|
+
" # show the user the ruby and gemset they are using in green
|
38
|
+
else printf "%b" "Using: $GEM_HOME
|
39
|
+
" # don't use colors in non-interactive shells
|
40
|
+
fi
|
41
|
+
fi
|
42
|
+
else
|
43
|
+
# If the environment file has not yet been created, use the RVM CLI to select.
|
44
|
+
rvm --create "$environment_id" || {
|
45
|
+
echo "Failed to create RVM environment '${environment_id}'."
|
46
|
+
return 1
|
47
|
+
}
|
48
|
+
fi
|
49
|
+
|
50
|
+
# If you use bundler, this might be useful to you:
|
51
|
+
# if [[ -s Gemfile ]] && {
|
52
|
+
# ! builtin command -v bundle >/dev/null ||
|
53
|
+
# builtin command -v bundle | GREP_OPTIONS="" \grep $rvm_path/bin/bundle >/dev/null
|
54
|
+
# }
|
55
|
+
# then
|
56
|
+
# printf "%b" "The rubygem 'bundler' is not installed. Installing it now.\n"
|
57
|
+
# gem install bundler
|
58
|
+
# fi
|
59
|
+
# if [[ -s Gemfile ]] && builtin command -v bundle >/dev/null
|
60
|
+
# then
|
61
|
+
# bundle install | GREP_OPTIONS="" \grep -vE '^Using|Your bundle is complete'
|
62
|
+
# fi
|
@@ -0,0 +1 @@
|
|
1
|
+
rvm 2.0.0@nuker --create --rvmrc
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
GNU LESSER GENERAL PUBLIC LICENSE
|
2
|
+
Version 3, 29 June 2007
|
3
|
+
|
4
|
+
Copyright 2011 British Broadcasting Corporation
|
5
|
+
Everyone is permitted to copy and distribute verbatim copies
|
6
|
+
of this license document, but changing it is not allowed.
|
7
|
+
|
8
|
+
|
9
|
+
This version of the GNU Lesser General Public License incorporates
|
10
|
+
the terms and conditions of version 3 of the GNU General Public
|
11
|
+
License, supplemented by the additional permissions listed below.
|
12
|
+
|
13
|
+
0. Additional Definitions.
|
14
|
+
|
15
|
+
As used herein, "this License" refers to version 3 of the GNU Lesser
|
16
|
+
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
17
|
+
General Public License.
|
18
|
+
|
19
|
+
"The Library" refers to a covered work governed by this License,
|
20
|
+
other than an Application or a Combined Work as defined below.
|
21
|
+
|
22
|
+
An "Application" is any work that makes use of an interface provided
|
23
|
+
by the Library, but which is not otherwise based on the Library.
|
24
|
+
Defining a subclass of a class defined by the Library is deemed a mode
|
25
|
+
of using an interface provided by the Library.
|
26
|
+
|
27
|
+
A "Combined Work" is a work produced by combining or linking an
|
28
|
+
Application with the Library. The particular version of the Library
|
29
|
+
with which the Combined Work was made is also called the "Linked
|
30
|
+
Version".
|
31
|
+
|
32
|
+
The "Minimal Corresponding Source" for a Combined Work means the
|
33
|
+
Corresponding Source for the Combined Work, excluding any source code
|
34
|
+
for portions of the Combined Work that, considered in isolation, are
|
35
|
+
based on the Application, and not on the Linked Version.
|
36
|
+
|
37
|
+
The "Corresponding Application Code" for a Combined Work means the
|
38
|
+
object code and/or source code for the Application, including any data
|
39
|
+
and utility programs needed for reproducing the Combined Work from the
|
40
|
+
Application, but excluding the System Libraries of the Combined Work.
|
41
|
+
|
42
|
+
1. Exception to Section 3 of the GNU GPL.
|
43
|
+
|
44
|
+
You may convey a covered work under sections 3 and 4 of this License
|
45
|
+
without being bound by section 3 of the GNU GPL.
|
46
|
+
|
47
|
+
2. Conveying Modified Versions.
|
48
|
+
|
49
|
+
If you modify a copy of the Library, and, in your modifications, a
|
50
|
+
facility refers to a function or data to be supplied by an Application
|
51
|
+
that uses the facility (other than as an argument passed when the
|
52
|
+
facility is invoked), then you may convey a copy of the modified
|
53
|
+
version:
|
54
|
+
|
55
|
+
a) under this License, provided that you make a good faith effort to
|
56
|
+
ensure that, in the event an Application does not supply the
|
57
|
+
function or data, the facility still operates, and performs
|
58
|
+
whatever part of its purpose remains meaningful, or
|
59
|
+
|
60
|
+
b) under the GNU GPL, with none of the additional permissions of
|
61
|
+
this License applicable to that copy.
|
62
|
+
|
63
|
+
3. Object Code Incorporating Material from Library Header Files.
|
64
|
+
|
65
|
+
The object code form of an Application may incorporate material from
|
66
|
+
a header file that is part of the Library. You may convey such object
|
67
|
+
code under terms of your choice, provided that, if the incorporated
|
68
|
+
material is not limited to numerical parameters, data structure
|
69
|
+
layouts and accessors, or small macros, inline functions and templates
|
70
|
+
(ten or fewer lines in length), you do both of the following:
|
71
|
+
|
72
|
+
a) Give prominent notice with each copy of the object code that the
|
73
|
+
Library is used in it and that the Library and its use are
|
74
|
+
covered by this License.
|
75
|
+
|
76
|
+
b) Accompany the object code with a copy of the GNU GPL and this license
|
77
|
+
document.
|
78
|
+
|
79
|
+
4. Combined Works.
|
80
|
+
|
81
|
+
You may convey a Combined Work under terms of your choice that,
|
82
|
+
taken together, effectively do not restrict modification of the
|
83
|
+
portions of the Library contained in the Combined Work and reverse
|
84
|
+
engineering for debugging such modifications, if you also do each of
|
85
|
+
the following:
|
86
|
+
|
87
|
+
a) Give prominent notice with each copy of the Combined Work that
|
88
|
+
the Library is used in it and that the Library and its use are
|
89
|
+
covered by this License.
|
90
|
+
|
91
|
+
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
92
|
+
document.
|
93
|
+
|
94
|
+
c) For a Combined Work that displays copyright notices during
|
95
|
+
execution, include the copyright notice for the Library among
|
96
|
+
these notices, as well as a reference directing the user to the
|
97
|
+
copies of the GNU GPL and this license document.
|
98
|
+
|
99
|
+
d) Do one of the following:
|
100
|
+
|
101
|
+
0) Convey the Minimal Corresponding Source under the terms of this
|
102
|
+
License, and the Corresponding Application Code in a form
|
103
|
+
suitable for, and under terms that permit, the user to
|
104
|
+
recombine or relink the Application with a modified version of
|
105
|
+
the Linked Version to produce a modified Combined Work, in the
|
106
|
+
manner specified by section 6 of the GNU GPL for conveying
|
107
|
+
Corresponding Source.
|
108
|
+
|
109
|
+
1) Use a suitable shared library mechanism for linking with the
|
110
|
+
Library. A suitable mechanism is one that (a) uses at run time
|
111
|
+
a copy of the Library already present on the user's computer
|
112
|
+
system, and (b) will operate properly with a modified version
|
113
|
+
of the Library that is interface-compatible with the Linked
|
114
|
+
Version.
|
115
|
+
|
116
|
+
e) Provide Installation Information, but only if you would otherwise
|
117
|
+
be required to provide such information under section 6 of the
|
118
|
+
GNU GPL, and only to the extent that such information is
|
119
|
+
necessary to install and execute a modified version of the
|
120
|
+
Combined Work produced by recombining or relinking the
|
121
|
+
Application with a modified version of the Linked Version. (If
|
122
|
+
you use option 4d0, the Installation Information must accompany
|
123
|
+
the Minimal Corresponding Source and Corresponding Application
|
124
|
+
Code. If you use option 4d1, you must provide the Installation
|
125
|
+
Information in the manner specified by section 6 of the GNU GPL
|
126
|
+
for conveying Corresponding Source.)
|
127
|
+
|
128
|
+
5. Combined Libraries.
|
129
|
+
|
130
|
+
You may place library facilities that are a work based on the
|
131
|
+
Library side by side in a single library together with other library
|
132
|
+
facilities that are not Applications and are not covered by this
|
133
|
+
License, and convey such a combined library under terms of your
|
134
|
+
choice, if you do both of the following:
|
135
|
+
|
136
|
+
a) Accompany the combined library with a copy of the same work based
|
137
|
+
on the Library, uncombined with any other library facilities,
|
138
|
+
conveyed under the terms of this License.
|
139
|
+
|
140
|
+
b) Give prominent notice with the combined library that part of it
|
141
|
+
is a work based on the Library, and explaining where to find the
|
142
|
+
accompanying uncombined form of the same work.
|
143
|
+
|
144
|
+
6. Revised Versions of the GNU Lesser General Public License.
|
145
|
+
|
146
|
+
The Free Software Foundation may publish revised and/or new versions
|
147
|
+
of the GNU Lesser General Public License from time to time. Such new
|
148
|
+
versions will be similar in spirit to the present version, but may
|
149
|
+
differ in detail to address new problems or concerns.
|
150
|
+
|
151
|
+
Each version is given a distinguishing version number. If the
|
152
|
+
Library as you received it specifies that a certain numbered version
|
153
|
+
of the GNU Lesser General Public License "or any later version"
|
154
|
+
applies to it, you have the option of following the terms and
|
155
|
+
conditions either of that published version or of any later version
|
156
|
+
published by the Free Software Foundation. If the Library as you
|
157
|
+
received it does not specify a version number of the GNU Lesser
|
158
|
+
General Public License, you may choose any version of the GNU Lesser
|
159
|
+
General Public License ever published by the Free Software Foundation.
|
160
|
+
|
161
|
+
If the Library as you received it specifies that a proxy can decide
|
162
|
+
whether future versions of the GNU Lesser General Public License shall
|
163
|
+
apply, that proxy's public statement of acceptance of any version is
|
164
|
+
permanent authorization for you to choose that version for the
|
165
|
+
Library.
|
data/Rakefile
ADDED
data/bin/nuker
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib') unless $:.include?(File.dirname(__FILE__) + '/../lib')
|
3
|
+
|
4
|
+
if ARGV.first == "server"
|
5
|
+
require "nuker"
|
6
|
+
Sinatra::Application.run!
|
7
|
+
elsif ARGV[0] == "push"
|
8
|
+
require "restclient"
|
9
|
+
require "json"
|
10
|
+
require "nuker/parses_features"
|
11
|
+
features = []
|
12
|
+
Dir.glob(File.join("#{ARGV[2]}", "**/*.feature")).each do |feature_path|
|
13
|
+
begin
|
14
|
+
gherkin = nuker::ParsesFeatures.new.parse(File.read(feature_path))
|
15
|
+
rescue
|
16
|
+
puts "Couldn't parse '#{feature_path}'"
|
17
|
+
puts "Contents:"
|
18
|
+
puts File.read(feature_path)
|
19
|
+
end
|
20
|
+
features << {:path => feature_path, :gherkin => gherkin}
|
21
|
+
end
|
22
|
+
RestClient.put "#{ARGV[1]}/features/?authentication_code=#{File.read(".nuker").strip}", features.to_json, {:content_type => :json, :accept => :json}
|
23
|
+
elsif ARGV[0] == "destroy"
|
24
|
+
require "restclient"
|
25
|
+
RestClient.delete "#{ARGV[1]}?authentication_code=#{File.read(".nuker").strip}"
|
26
|
+
end
|
data/config.ru
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
Feature: Too many @wip tags
|
2
|
+
@wip
|
3
|
+
Scenario: Scenario 1
|
4
|
+
@wip
|
5
|
+
Scenario: Scenario 2
|
6
|
+
@wip
|
7
|
+
Scenario: Scenario 3
|
8
|
+
@wip
|
9
|
+
Scenario: Scenario 4
|
10
|
+
@wip
|
11
|
+
Scenario: Scenario 5
|
12
|
+
@wip
|
13
|
+
Scenario: Scenario 6
|
14
|
+
@wip
|
15
|
+
Scenario: Scenario 7
|
16
|
+
@wip
|
17
|
+
Scenario: Scenario 8
|
18
|
+
@wip
|
19
|
+
Scenario: Scenario 9
|
20
|
+
@wip
|
21
|
+
Scenario: Scenario 10
|
@@ -0,0 +1,25 @@
|
|
1
|
+
Feature: Counts
|
2
|
+
In order to understand the size of the project
|
3
|
+
As a stakeholder
|
4
|
+
I want a visual indication of the number of tags, scenarios and features
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given a feature file named "sample.feature" with the contents:
|
8
|
+
"""
|
9
|
+
@tag1
|
10
|
+
Feature: Tag Feature
|
11
|
+
|
12
|
+
@tag2 @multiple
|
13
|
+
Scenario: Tag Foo 1
|
14
|
+
|
15
|
+
@tag3 @multiple
|
16
|
+
Scenario: Tag Bar 2
|
17
|
+
"""
|
18
|
+
|
19
|
+
Scenario: Features
|
20
|
+
When I visit the project page
|
21
|
+
Then I see "Features (1)"
|
22
|
+
|
23
|
+
Scenario: Tags
|
24
|
+
When I visit the project page
|
25
|
+
Then I see "Tags (5)"
|
@@ -0,0 +1,69 @@
|
|
1
|
+
Feature: Feature Page
|
2
|
+
In order to view a feature and its intent
|
3
|
+
As a stakeholder
|
4
|
+
I want a page that displays the feature's name, free-form narrative and scenario titles
|
5
|
+
|
6
|
+
Scenario: Content
|
7
|
+
Given a feature file named "sample.feature" with the contents:
|
8
|
+
"""
|
9
|
+
Feature: Sample Feature
|
10
|
+
In order to get some value
|
11
|
+
As a person
|
12
|
+
I want to create value
|
13
|
+
"""
|
14
|
+
When I visit the sample feature page
|
15
|
+
Then I see the feature free-form narrative
|
16
|
+
|
17
|
+
Scenario: Tags
|
18
|
+
Given a feature file named "sample.feature" with the contents:
|
19
|
+
"""
|
20
|
+
@sample_tag
|
21
|
+
Feature: Sample Feature
|
22
|
+
"""
|
23
|
+
When I visit the sample feature page
|
24
|
+
Then I see "sample_tag"
|
25
|
+
|
26
|
+
Scenario: Scenario Links
|
27
|
+
Given a feature file named "sample.feature" with the contents:
|
28
|
+
"""
|
29
|
+
Feature: Sample Feature
|
30
|
+
In order to get some value
|
31
|
+
As a person
|
32
|
+
I want to create value
|
33
|
+
|
34
|
+
Scenario: Sample Aidy
|
35
|
+
Given my name is "Aidy"
|
36
|
+
When I drink alcohol
|
37
|
+
Then I go nuts
|
38
|
+
|
39
|
+
Scenario: Sample Andrew
|
40
|
+
Given my name is 'Andrew'
|
41
|
+
When I drink alcohol
|
42
|
+
Then I go happy
|
43
|
+
"""
|
44
|
+
When I visit the sample feature page
|
45
|
+
Then I see Scenario headers as links
|
46
|
+
|
47
|
+
Scenario: Sort Scenario Links in Alphabetical Order
|
48
|
+
Given a feature file named "sample.feature" with the contents:
|
49
|
+
"""
|
50
|
+
Feature: Sample Feature
|
51
|
+
Scenario: V
|
52
|
+
Scenario: C
|
53
|
+
Scenario: I
|
54
|
+
Scenario: N
|
55
|
+
"""
|
56
|
+
When I visit the sample feature page
|
57
|
+
Then the scenario links are sorted
|
58
|
+
|
59
|
+
Scenario: Scenario Tags
|
60
|
+
Given a feature file named "sample.feature" with the contents:
|
61
|
+
"""
|
62
|
+
Feature: Sample Feature
|
63
|
+
|
64
|
+
@tag1 @tag2
|
65
|
+
Scenario: Sample Aidy
|
66
|
+
"""
|
67
|
+
When I visit the sample feature page
|
68
|
+
Then I see "tag1"
|
69
|
+
And I see "tag2"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
Feature: List Tags
|
2
|
+
In order to be informed of all tags
|
3
|
+
As a stakeholder
|
4
|
+
I want a list of tags to be displayed
|
5
|
+
|
6
|
+
Scenario: Multiple tags
|
7
|
+
Given a feature file named "sample.feature" with the contents:
|
8
|
+
"""
|
9
|
+
@tag1
|
10
|
+
Feature: Tag Feature
|
11
|
+
@tag2 @multiple
|
12
|
+
Scenario: Tag Scenario 1
|
13
|
+
@tag3 @multiple
|
14
|
+
Scenario: Tag Scenario 2
|
15
|
+
"""
|
16
|
+
When I visit the project page
|
17
|
+
Then I see a link to "@tag1 (1)" with the url "/projects/project/search?q=@tag1"
|
18
|
+
And I see a link to "@tag2 (1)" with the url "/projects/project/search?q=@tag2"
|
19
|
+
And I see a link to "@tag3 (1)" with the url "/projects/project/search?q=@tag3"
|
20
|
+
And I see a link to "@multiple (2)" with the url "/projects/project/search?q=@multiple"
|
21
|
+
|
22
|
+
Scenario: Coloured tags
|
23
|
+
Given a feature file named "sample.feature" with the contents:
|
24
|
+
"""
|
25
|
+
@tag1
|
26
|
+
Feature: Tag Feature
|
27
|
+
@tag2 @tag3
|
28
|
+
Scenario: Tag Scenario 1
|
29
|
+
"""
|
30
|
+
When I visit the project page
|
31
|
+
Then I see each tag has an individual colour
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Feature: Notifications
|
2
|
+
In order to be great developers
|
3
|
+
As a developer
|
4
|
+
I want to be told off when I have too many bad tags
|
5
|
+
|
6
|
+
Scenario: Ten @wip tags
|
7
|
+
Given a feature file with 10 @wip tags
|
8
|
+
When I visit the project page
|
9
|
+
Then I see a notification that says "You have 10 @wip tags :("
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Feature: Progress Bar
|
2
|
+
In order to see the state of the project
|
3
|
+
As a stakeholder
|
4
|
+
I want a visual representation of counted tags
|
5
|
+
|
6
|
+
Scenario: Progress Bar
|
7
|
+
Given a feature file on the project "project_name" with the contents:
|
8
|
+
"""
|
9
|
+
Feature: Mixed
|
10
|
+
|
11
|
+
@wip
|
12
|
+
Scenario: WiP
|
13
|
+
|
14
|
+
@notstarted
|
15
|
+
Scenario: Not Started
|
16
|
+
"""
|
17
|
+
When I visit the project page for "project_name"
|
18
|
+
And I select "Progress"
|
19
|
+
Then I see "This project has 2 scenarios"
|
20
|
+
And I see "@wip (50%)"
|
21
|
+
And I see "@notstarted (50%)"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
Feature: Project Home Page
|
2
|
+
In order to simply view a project's complete story set
|
3
|
+
As a stakeholder
|
4
|
+
I want a home page that displays all features
|
5
|
+
|
6
|
+
Scenario: Links to features in alphabetical order
|
7
|
+
Given a feature file named "kate_moss.feature" with the contents:
|
8
|
+
"""
|
9
|
+
Feature: Kate Moss
|
10
|
+
"""
|
11
|
+
Given a feature file named "katie_price.feature" with the contents:
|
12
|
+
"""
|
13
|
+
Feature: Katie Price
|
14
|
+
"""
|
15
|
+
Given a feature file named "jessica_jane_clement.feature" with the contents:
|
16
|
+
"""
|
17
|
+
Feature: Jessica-Jane Clement
|
18
|
+
"""
|
19
|
+
Given a feature file named "elle_macpherson.feature" with the contents:
|
20
|
+
"""
|
21
|
+
Feature: Elle Macpherson
|
22
|
+
"""
|
23
|
+
When I visit the project page
|
24
|
+
Then I see a link to my sample features
|
25
|
+
And the features are ordered alphabetically
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Feature: Projects
|
2
|
+
In order to allow multiple projects
|
3
|
+
As a user
|
4
|
+
I want to be able to switch between projects
|
5
|
+
|
6
|
+
Scenario: Single project
|
7
|
+
Given a feature file on the project "project_name" with the contents:
|
8
|
+
"""
|
9
|
+
Feature: Projects
|
10
|
+
"""
|
11
|
+
And I visit the project page for "project_name"
|
12
|
+
Then I see a link to the feature "Projects"
|
13
|
+
|
14
|
+
@javascript
|
15
|
+
Scenario: Switch between projects
|
16
|
+
Given 2 projects exist
|
17
|
+
When I view the welcome page
|
18
|
+
Then I can switch to the 2nd project
|
19
|
+
And I can switch to the 1st project
|
@@ -0,0 +1,34 @@
|
|
1
|
+
Feature: Push Features To Server
|
2
|
+
In order to easily get features on the server
|
3
|
+
As a developer
|
4
|
+
I want to be able to push features to an endpoint
|
5
|
+
|
6
|
+
Scenario: Push features without authentication
|
7
|
+
Given I don't have a .nuker authorisation file
|
8
|
+
When I put data to /my_project_name/features with the authentication code
|
9
|
+
Then I get a 403 http status
|
10
|
+
|
11
|
+
Scenario: Push features with authentication
|
12
|
+
Given I have a .nuker authentication file
|
13
|
+
When I put data to /my_project_name/features with the authentication code
|
14
|
+
Then I get a 201 http status
|
15
|
+
|
16
|
+
Scenario: Pushed features show up on home page
|
17
|
+
Given I have a .nuker authentication file
|
18
|
+
When I put data to /my_project_name/features with the authentication code
|
19
|
+
And I visit "my_project_name" page
|
20
|
+
Then I see the uploaded feature
|
21
|
+
|
22
|
+
Scenario: Delete projects without authorisation
|
23
|
+
Given I don't have a .nuker authorisation file
|
24
|
+
And I create a project called "project1"
|
25
|
+
When I send DELETE to "/projects/project1"
|
26
|
+
Then "project1" should exist
|
27
|
+
And I get a 403 http status
|
28
|
+
|
29
|
+
Scenario: Delete projects with authorisation
|
30
|
+
Given I have a .wally authentication file
|
31
|
+
And I create a project called "project1"
|
32
|
+
When I send DELETE to "/projects/project1"
|
33
|
+
Then "project1" should not exist
|
34
|
+
And I get a 201 http status
|