wally 0.0.33 → 0.0.34

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.
Files changed (44) hide show
  1. data/README.md +5 -3
  2. data/Rakefile +4 -0
  3. data/features/counts.feature +10 -3
  4. data/features/feature_page.feature +17 -9
  5. data/features/list_tags.feature +5 -5
  6. data/features/notifications.feature +1 -1
  7. data/features/progress_bar.feature +25 -0
  8. data/features/{home_page.feature → project_home.feature} +3 -16
  9. data/features/projects.feature +12 -0
  10. data/features/push_features.feature +4 -4
  11. data/features/scenario_page.feature +4 -27
  12. data/features/search_features.feature +7 -7
  13. data/features/step_definitions/feature_page_steps.rb +15 -0
  14. data/features/step_definitions/notifications_steps.rb +1 -1
  15. data/features/step_definitions/project_home_steps.rb +10 -0
  16. data/features/step_definitions/projects_steps.rb +11 -0
  17. data/features/step_definitions/push_features_steps.rb +10 -6
  18. data/features/step_definitions/scenario_page_steps.rb +15 -0
  19. data/features/step_definitions/search_features_steps.rb +1 -1
  20. data/features/step_definitions/steps.rb +15 -3
  21. data/features/step_definitions/welcome_page.rb +19 -0
  22. data/features/support/env.rb +28 -6
  23. data/features/welcome_page.feature +30 -0
  24. data/lib/wally.rb +0 -3
  25. data/lib/wally/application.rb +39 -22
  26. data/lib/wally/counts_tags.rb +3 -3
  27. data/lib/wally/feature.rb +1 -1
  28. data/lib/wally/project.rb +8 -0
  29. data/lib/wally/public/scripts/projects.js +6 -0
  30. data/lib/wally/public/skin.css +7 -0
  31. data/lib/wally/search_features.rb +1 -1
  32. data/lib/wally/version.rb +1 -1
  33. data/lib/wally/views/feature_link.haml +1 -1
  34. data/lib/wally/views/layout.haml +32 -21
  35. data/lib/wally/views/{index.haml → project.haml} +0 -0
  36. data/lib/wally/views/search.haml +3 -3
  37. data/spec/spec_helper.rb +24 -0
  38. data/spec/wally/counts_tags_spec.rb +10 -22
  39. data/spec/wally/feature_spec.rb +12 -15
  40. data/spec/wally/project_spec.rb +18 -0
  41. data/spec/wally/search_features_spec.rb +18 -25
  42. data/wally.gemspec +1 -0
  43. metadata +58 -29
  44. data/features/step_definitions/browse_features_steps.rb +0 -47
data/README.md CHANGED
@@ -19,12 +19,14 @@ Many of the ideas have been borrowed from Matt Wynne's Relish product, but we;
19
19
  * Include a project progress bar (based on tags)
20
20
 
21
21
  ### Installation
22
- * Install [mongodb](http://www.mongodb.org/display/DOCS/Quickstart "mongodb") and ensure it is running
23
- * gem install wally
22
+ * Install [mongodb](http://www.mongodb.org/display/DOCS/Quickstart "mongodb") and ensure it is running (e.g. '~ $ ./mongodb-xxxxx-xxxx-x.x.x/bin/mongod')
23
+ * gem install wally
24
+
25
+ ### Usage
24
26
  * wally server
25
27
  * http://localhost:4567/
26
28
  * create a '.wally' file and enter any authentication text you like
27
- * wally push http://localhost:4567/ feature_dir
29
+ * wally push http://localhost:4567/projects/project-name feature-dir
28
30
 
29
31
 
30
32
  ## Wally?
data/Rakefile CHANGED
@@ -1 +1,5 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ task :sample do
4
+ sh "bin/wally push http://localhost:4567/project features/"
5
+ end
@@ -3,16 +3,23 @@ Feature: Counts
3
3
  As a stakeholder
4
4
  I want a visual indication of the number of tags, scenarios and features
5
5
 
6
- Scenario: Tags, scenarios, and features count
6
+ Background:
7
7
  Given a feature file named "sample.feature" with the contents:
8
8
  """
9
9
  @tag1
10
10
  Feature: Tag Feature
11
+
11
12
  @tag2 @multiple
12
13
  Scenario: Tag Foo 1
14
+
13
15
  @tag3 @multiple
14
16
  Scenario: Tag Bar 2
15
17
  """
16
- When I visit the home page
18
+
19
+ Scenario: Features
20
+ When I visit the project page
17
21
  Then I should see "Features (1)"
18
- And I should see "Tags (5)"
22
+
23
+ Scenario: Tags
24
+ When I visit the project page
25
+ Then I should see "Tags (5)"
@@ -1,10 +1,9 @@
1
1
  Feature: Feature Page
2
2
  In order to view a feature and its intent
3
3
  As a stakeholder
4
- I want a page that displays the feature's name,
5
- free-form narrative and scenario titles
4
+ I want a page that displays the feature's name, free-form narrative and scenario titles
6
5
 
7
- Scenario: Feature Content
6
+ Scenario: Content
8
7
  Given a feature file named "sample.feature" with the contents:
9
8
  """
10
9
  Feature: Sample Feature
@@ -15,7 +14,16 @@ Feature: Feature Page
15
14
  When I visit the sample feature page
16
15
  Then I should see the feature free-form narrative
17
16
 
18
- Scenario: View Scenario Links
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 should see "sample_tag"
25
+
26
+ Scenario: Scenario Links
19
27
  Given a feature file named "sample.feature" with the contents:
20
28
  """
21
29
  Feature: Sample Feature
@@ -35,7 +43,7 @@ Feature: Feature Page
35
43
  """
36
44
  When I visit the sample feature page
37
45
  Then I should see Scenario headers as links
38
-
46
+
39
47
  Scenario: Sort Scenario Links in Alphabetical Order
40
48
  Given a feature file named "sample.feature" with the contents:
41
49
  """
@@ -44,18 +52,18 @@ Feature: Feature Page
44
52
  Scenario: C
45
53
  Scenario: I
46
54
  Scenario: N
47
- """
55
+ """
48
56
  When I visit the sample feature page
49
- Then the scenario links are sorted
57
+ Then the scenario links are sorted
50
58
 
51
- Scenario: View Scenario Tags - Feature Page
59
+ Scenario: Scenario Tags
52
60
  Given a feature file named "sample.feature" with the contents:
53
61
  """
54
62
  Feature: Sample Feature
55
63
 
56
64
  @tag1 @tag2
57
65
  Scenario: Sample Aidy
58
- """
66
+ """
59
67
  When I visit the sample feature page
60
68
  Then I should see "tag1"
61
69
  And I should see "tag2"
@@ -13,8 +13,8 @@ Feature: List Tags
13
13
  @tag3 @multiple
14
14
  Scenario: Tag Scenario 2
15
15
  """
16
- When I visit the home page
17
- Then I should see a link to "@tag1 (1)" with the url "/search?q=@tag1"
18
- And I should see a link to "@tag2 (1)" with the url "/search?q=@tag2"
19
- And I should see a link to "@tag3 (1)" with the url "/search?q=@tag3"
20
- And I should see a link to "@multiple (2)" with the url "/search?q=@multiple"
16
+ When I visit the project page
17
+ Then I should see a link to "@tag1 (1)" with the url "/projects/project/search?q=@tag1"
18
+ And I should see a link to "@tag2 (1)" with the url "/projects/project/search?q=@tag2"
19
+ And I should see a link to "@tag3 (1)" with the url "/projects/project/search?q=@tag3"
20
+ And I should see a link to "@multiple (2)" with the url "/projects/project/search?q=@multiple"
@@ -5,5 +5,5 @@ Feature: Notifications
5
5
 
6
6
  Scenario: Ten @wip tags
7
7
  Given a feature file with 10 @wip tags
8
- When I visit the home page
8
+ When I visit the project page
9
9
  Then I should see a notification that says "You have 10 @wip tags :("
@@ -0,0 +1,25 @@
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 should see "This project has 2 scenarios"
20
+ And I should see "@wip (50%)"
21
+ And I should see "@notstarted (50%)"
22
+
23
+
24
+
25
+
@@ -1,9 +1,8 @@
1
- Feature: Home Page
1
+ Feature: Project Home Page
2
2
  In order to simply view a project's complete story set
3
3
  As a stakeholder
4
- I want a home page that displays all features
4
+ I want a home page that displays all features
5
5
 
6
-
7
6
  Scenario: Links to features in alphabetical order
8
7
  Given a feature file named "kate_moss.feature" with the contents:
9
8
  """
@@ -21,18 +20,6 @@ Feature: Home Page
21
20
  """
22
21
  Feature: Elle Macpherson
23
22
  """
24
- When I visit the home page
23
+ When I visit the project page
25
24
  Then I should see a link to my sample features
26
25
  And the features are ordered alphabetically
27
-
28
- Scenario: Display feature tags
29
- Given a feature file named "sample.feature" with the contents:
30
- """
31
- @sample_tag
32
- Feature: Sample Feature
33
- """
34
- When I visit the sample feature page
35
- Then I should see "sample_tag"
36
-
37
-
38
-
@@ -0,0 +1,12 @@
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 should see a link to the feature "Projects"
@@ -5,16 +5,16 @@ Feature: Push Features To Server
5
5
 
6
6
  Scenario: Push features without authentication
7
7
  Given I don't have a .wally authorisation file
8
- When I put data to /features with the authentication code
8
+ When I put data to /my_project_name/features with the authentication code
9
9
  Then I should get a 403 http status
10
10
 
11
11
  Scenario: Push features with authentication
12
12
  Given I have a .wally authentication file
13
- When I put data to /features with the authentication code
13
+ When I put data to /my_project_name/features with the authentication code
14
14
  Then I should get a 201 http status
15
15
 
16
16
  Scenario: Pushed features show up on home page
17
17
  Given I have a .wally authentication file
18
- When I put data to /features with the authentication code
19
- And I visit the home page
18
+ When I put data to /my_project_name/features with the authentication code
19
+ And I visit "my_project_name" page
20
20
  Then I should see the uploaded feature
@@ -1,9 +1,9 @@
1
1
  Feature: Scenario Page
2
2
  In order to view a scenario's intent
3
- As a stakeholder
3
+ As a stakeholder
4
4
  I want a page that displays each scenario and its steps
5
5
 
6
- Scenario: View Scenario Content
6
+ Scenario: Content
7
7
  Given a feature file named "sample.feature" with the contents:
8
8
  """
9
9
  Feature: Sample Feature
@@ -20,8 +20,7 @@ Feature: Scenario Page
20
20
  And I should see "tag1"
21
21
  And I should see "tag2"
22
22
 
23
-
24
- Scenario: View Scenario Background
23
+ Scenario: Background
25
24
  Given a feature file named "sample.feature" with the contents:
26
25
  """
27
26
  Feature: Sample Feature
@@ -35,7 +34,7 @@ Feature: Scenario Page
35
34
  And click on a scenario header link
36
35
  Then the background is visible
37
36
 
38
- Scenario: View Scenario Tags - Scenario Page
37
+ Scenario: Tags
39
38
  Given a feature file named "sample.feature" with the contents:
40
39
  """
41
40
  Feature: Sample Feature
@@ -49,25 +48,3 @@ Feature: Scenario Page
49
48
  When I visit the sample feature page
50
49
  And click on a scenario header link
51
50
  Then I should see "work_in_progress"
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
-
72
-
73
-
@@ -15,9 +15,9 @@ Feature: Search features
15
15
 
16
16
  Examples:
17
17
  | query | feature name | url |
18
- | Sample | Sample Feature |/features/sample-feature |
19
- | sAmPlE | Sample Feature |/features/sample-feature |
20
- | @QA | Sample Feature |/features/sample-feature |
18
+ | Sample | Sample Feature |/projects/project/features/sample-feature |
19
+ | sAmPlE | Sample Feature |/projects/project/features/sample-feature |
20
+ | @QA | Sample Feature |/projects/project/features/sample-feature |
21
21
 
22
22
  Scenario: Search feature narrative
23
23
  Given a feature file named "sample.feature" with the contents:
@@ -29,7 +29,7 @@ Feature: Search features
29
29
  """
30
30
  And I am on the search page
31
31
  When I search for "donkey"
32
- Then I should see a search result link to "Sample Feature" with the url "/features/sample-feature"
32
+ Then I should see a search result link to "Sample Feature" with the url "/projects/project/features/sample-feature"
33
33
 
34
34
  Scenario: Search scenario name
35
35
  Given a feature file named "sample.feature" with the contents:
@@ -39,7 +39,7 @@ Feature: Search features
39
39
  """
40
40
  And I am on the search page
41
41
  When I search for "Sample Scenario"
42
- Then I should see a search result link to "Sample Scenario" with the url "/features/sample-feature/scenario/sample-scenario"
42
+ Then I should see a search result link to "Sample Scenario" with the url "/projects/project/features/sample-feature/scenario/sample-scenario"
43
43
 
44
44
  Scenario: Search scenario steps
45
45
  Given a feature file named "sample.feature" with the contents:
@@ -50,7 +50,7 @@ Feature: Search features
50
50
  """
51
51
  And I am on the search page
52
52
  When I search for "I do something"
53
- Then I should see a search result link to "Sample Scenario" with the url "/features/sample-feature/scenario/sample-scenario"
53
+ Then I should see a search result link to "Sample Scenario" with the url "/projects/project/features/sample-feature/scenario/sample-scenario"
54
54
 
55
55
  Scenario: Search suggests other searches
56
56
  Given a feature file named "sample.feature" with the contents:
@@ -60,7 +60,7 @@ Feature: Search features
60
60
  And I am on the search page
61
61
  When I search for "btman"
62
62
  Then I should see "Did you mean"
63
- And I should see a search result link to "Batman" with the url "/search?q=Batman"
63
+ And I should see a search result link to "Batman" with the url "/projects/project/search?q=Batman"
64
64
 
65
65
  Scenario: Search displays tags
66
66
  Given a feature file named "sample.feature" with the contents:
@@ -0,0 +1,15 @@
1
+ Then /^I should see the feature free\-form narrative$/ do
2
+ page.should have_content "In order to get some value"
3
+ page.should have_content "As a person"
4
+ page.should have_content "I want to create value"
5
+ end
6
+
7
+ Then /^I should see Scenario headers as links$/ do
8
+ page.body.should have_content "Scenarios"
9
+ page.should have_link "Sample Aidy", :href => "/projects/project/features/sample-feature/scenario/sample-aidy"
10
+ page.should have_link "Sample Andrew", :href => "/projects/project/features/sample-feature/scenario/sample-andrew"
11
+ end
12
+
13
+ Then /^the scenario links are sorted$/ do
14
+ page.body.should =~ /C.*I.*N.*V/m
15
+ end
@@ -3,7 +3,7 @@ Given /^a feature file with (\d+) @wip tags$/ do |wip_tag_count|
3
3
  1.upto(wip_tag_count.to_i) do |number|
4
4
  contents += "@wip\nScenario: Scenario #{number}\n"
5
5
  end
6
- create_feature("sample1.feature", contents)
6
+ create_feature("project", "sample1.feature", contents)
7
7
  end
8
8
 
9
9
  Then /^I should see a notification that says "([^"]*)"$/ do |text|
@@ -0,0 +1,10 @@
1
+ Then /^I should see a link to my sample features$/ do
2
+ page.should have_link "Kate Moss", :href => "/project/features/kate-moss"
3
+ page.should have_link "Katie Price", :href => "/project/features/katie-price"
4
+ page.should have_link "Jessica-Jane Clement", :href => "/project/features/jessica-jane-clement"
5
+ page.should have_link "Elle Macpherson", :href => "/project/features/elle-macpherson"
6
+ end
7
+
8
+ Then /^the features are ordered alphabetically$/ do
9
+ page.body.should =~ /Elle Macpherson.*Jessica-Jane Clement.*Kate Moss.*Katie Price/m
10
+ end
@@ -0,0 +1,11 @@
1
+ Given /^a feature file on the project "([^"]*)" with the contents:$/ do |project, contents|
2
+ create_feature(project, "feature1.feature", contents)
3
+ end
4
+
5
+ Given /^I visit the project page for "([^"]*)"$/ do |project|
6
+ visit "/projects/#{project}"
7
+ end
8
+
9
+ Then /^I should see a link to the feature "([^"]*)"$/ do |feature|
10
+ page.should have_link feature
11
+ end
@@ -12,12 +12,6 @@ Given /^I have a \.wally authentication file$/ do
12
12
  end
13
13
  end
14
14
 
15
- When /^I put data to \/features with the authentication code$/ do
16
- gherkin = Wally::ParsesFeatures.new.parse("Feature: Feature Name")
17
- data = [{:path => "feature-name.feature", :gherkin => gherkin}].to_json
18
- page.driver.put "/features?authentication_code=#{@authentication_code}", data
19
- end
20
-
21
15
  Then /^I should get a (\d+) http status$/ do |status|
22
16
  page.driver.status_code.should eql status.to_i
23
17
  end
@@ -25,3 +19,13 @@ end
25
19
  Then /^I should see the uploaded feature$/ do
26
20
  page.body.should have_content "Feature Name"
27
21
  end
22
+
23
+ When /^I put data to \/my_project_name\/features with the authentication code$/ do
24
+ gherkin = Wally::ParsesFeatures.new.parse("Feature: Feature Name")
25
+ data = [{:path => "feature-name.feature", :gherkin => gherkin}].to_json
26
+ page.driver.put "/projects/my_project_name/features?authentication_code=#{@authentication_code}", data
27
+ end
28
+
29
+ When /^I visit "([^"]*)" page$/ do |project_name|
30
+ visit "/projects/#{project_name}"
31
+ end
@@ -0,0 +1,15 @@
1
+ When /^click on a scenario header link$/ do
2
+ page.click_link "Sample Aidy"
3
+ end
4
+
5
+ Then /^a page appears with the scenario content$/ do
6
+ page.body.should have_content "Sample Aidy"
7
+ page.body.should have_content "Given my name is \"Aidy\""
8
+ page.body.should have_content "When I drink alcohol"
9
+ page.body.should have_content "Then I go nuts"
10
+ end
11
+
12
+ Then /^the background is visible$/ do
13
+ page.body.should have_content "Background:"
14
+ page.body.should have_content "Given some things"
15
+ end
@@ -1,5 +1,5 @@
1
1
  Given /^I am on the search page$/ do
2
- visit "/search"
2
+ visit "/projects/project/search"
3
3
  end
4
4
 
5
5
  When /^I search for "([^"]*)"$/ do |text|
@@ -1,10 +1,18 @@
1
1
  Given /^a feature file named "([^"]*)" with the contents:$/ do |filename, contents|
2
2
  @contents = contents
3
- create_feature(filename, @contents)
3
+ create_feature("project", filename, @contents)
4
4
  end
5
5
 
6
- When /^I visit the home page$/ do
7
- visit "/"
6
+ When /^I visit the project page$/ do
7
+ visit "/projects/project"
8
+ end
9
+
10
+ When /^I visit the sample feature page$/ do
11
+ visit "/projects/project/features/sample-feature"
12
+ end
13
+
14
+ When /^I select "([^"]*)"$/ do |text|
15
+ click_link text
8
16
  end
9
17
 
10
18
  Then /^I should see a link to "([^"]*)" with the url "([^"]*)"$/ do |text, url|
@@ -14,3 +22,7 @@ end
14
22
  Then /^I should see "([^"]*)"$/ do |text|
15
23
  page.should have_content(text)
16
24
  end
25
+
26
+ Then /^the total tag count is displayed$/ do
27
+ save_and_open_page
28
+ end