decko 0.1 → 0.2

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 (36) hide show
  1. checksums.yaml +4 -4
  2. data/decko.gemspec +3 -3
  3. data/features/attach.feature +11 -7
  4. data/features/follow.feature +45 -44
  5. data/features/navbox.feature +1 -1
  6. data/features/notifications.feature +1 -1
  7. data/features/pointer_inputs.feature +7 -0
  8. data/features/reference.feature +5 -1
  9. data/features/step_definitions/email_steps.rb +4 -0
  10. data/features/step_definitions/wagn_steps.rb +6 -3
  11. data/features/step_definitions/web_steps.rb +1 -0
  12. data/features/support/delayed_job.rb +1 -0
  13. data/features/support/env.rb +5 -2
  14. data/features/toolbar.feature +13 -11
  15. data/lib/decko/application.rb +1 -0
  16. data/lib/decko/commands/cucumber_command.rb +2 -2
  17. data/lib/decko/commands/cucumber_command/parser.rb +8 -0
  18. data/lib/decko/commands/rspec_command.rb +3 -3
  19. data/lib/decko/config/environments/development.rb +3 -2
  20. data/lib/decko/config/environments/production.rb +4 -0
  21. data/lib/decko/config/environments/test.rb +2 -2
  22. data/lib/decko/config/initializers/sedate_parser.rb +7 -0
  23. data/lib/decko/engine.rb +1 -1
  24. data/lib/decko/generators/decko/templates/Gemfile +16 -22
  25. data/lib/decko/mods_spec_helper.rb +0 -1
  26. data/lib/decko/response.rb +18 -12
  27. data/lib/decko/tasks/alias.rb +31 -0
  28. data/lib/decko/tasks/decko.rake +16 -43
  29. data/lib/decko/tasks/decko/bootstrap.rake +65 -62
  30. data/lib/decko/tasks/test.rake +10 -3
  31. data/rails/controllers/card_controller.rb +16 -10
  32. data/rails/engine-routes.rb +4 -1
  33. data/spec/controllers/card_controller_spec.rb +77 -58
  34. data/spec/controllers/location_spec.rb +4 -4
  35. metadata +10 -9
  36. data/lib/decko/tasks/decko/migrate.rake +0 -77
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 304019cc81e3198529a1e791d198117e55ab9cb1
4
- data.tar.gz: c83f5044b3ad51a781f73e37daf7fce773b681da
3
+ metadata.gz: b69a705d159befd136026205b4023c37694e92e0
4
+ data.tar.gz: f8183b7062dc891b0c26792967bbaa9ba443c573
5
5
  SHA512:
6
- metadata.gz: 2d0b6d3d8b76caa31951507447f5d91b3eac9191b20ba9e6798d4efcd5027d01079208b361e6ed0980fb425408c3463b37beee25d423b77436ad23c753101dd1
7
- data.tar.gz: 6df8548bf0607c893ad66e697e9488c2bb2e9d4dd65395d3a367845c9474eb0a1954a8636b4238a4371900361b71ef25c85375e95ec1d6fa9a230ca6090af932
6
+ metadata.gz: aa8968d82b45b4b5b90709082603f9e02023002d73bf4ca70dd4e60829baa380532fb9be5ec627093ce9a2bf7dbfa0aac6752bde2b46ad9066fa18529d964acf
7
+ data.tar.gz: f7f7bbde5063c892a97f93fd8b3837ef07c4a6478003ffdf2180bd629f8300c39946f28ba8a927bb646abe54a0380d489ff976a155722c7052a0e1401094e638
data/decko.gemspec CHANGED
@@ -6,7 +6,7 @@ vbits = version.split('.').map &:to_i
6
6
  vplus = { 0 => 90, 1 => 100 } # can remove and hardcode after 1.0
7
7
  vminor = vplus[ vbits[0] ] + vbits[1]
8
8
  card_version = [1, vminor, vbits[2]].compact.map(&:to_s).join "."
9
- # see card.gemspect for explanation of all of this, which has been ham-handedly
9
+ # see card.gemspec for explanation of all of this, which has been ham-handedly
10
10
  # cut and pasted here.
11
11
 
12
12
 
@@ -31,10 +31,10 @@ Gem::Specification.new do |s|
31
31
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
32
32
  s.require_paths = ["lib"]
33
33
 
34
- s.required_ruby_version = ">= 1.9.3"
34
+ s.required_ruby_version = ">= 2.2.2"
35
35
 
36
36
  [
37
- ["rails", "~> 4.2"],
37
+ ["rails", "~> 5.1"],
38
38
  ["card", card_version]
39
39
  ].each do |dep|
40
40
  s.add_runtime_dependency(*dep)
@@ -12,6 +12,7 @@ Feature: File Upload
12
12
  And I press "Submit"
13
13
  Then I should see "Problems with"
14
14
  And I should see "is missing"
15
+ And I wait for ajax response
15
16
 
16
17
  Scenario: Uploading a file
17
18
  When I go to new File
@@ -22,23 +23,30 @@ Feature: File Upload
22
23
  Then I should see "Add File..."
23
24
  When I upload the file "file.txt"
24
25
  And I wait for ajax response
26
+ And I wait 3 seconds
25
27
  And I fill in "card_name" with "a test file"
26
28
  And I press "Submit"
29
+ And I wait 2 seconds
27
30
  Then I should see "Download a test file"
31
+ And I wait for ajax response
28
32
 
29
33
  Scenario: Uploading and changing an image
30
34
  When I go to new Image
31
35
  And I upload the image "image.png"
32
36
  And I wait for ajax response
37
+ And I wait 3 seconds
33
38
  Then I should see "image.png 34.3 KB"
34
39
  And I fill in "card_name" with "a test image"
35
40
  And I press "Submit"
41
+ And I wait 3 seconds
36
42
  Then I should see an image of size "large" and type "png"
37
43
  And I edit "a test image"
38
44
  And I upload the image "image2.jpg"
39
45
  And I wait for ajax response
46
+ And I wait 3 seconds
40
47
  Then I should see "image2.jpg 69.8 KB"
41
48
  And I press "Submit"
49
+ And I wait 3 seconds
42
50
  Then I should see an image of size "large" and type "jpg"
43
51
  And I wait for ajax response
44
52
 
@@ -50,6 +58,7 @@ Feature: File Upload
50
58
  And I press "Submit"
51
59
  And I wait for ajax response
52
60
  Then I should see a non-coded image of size "large" and type "jpg"
61
+ And I wait for ajax response
53
62
 
54
63
  Scenario: uploading a file as a field in a form
55
64
  When I go to "/new Cardtype"
@@ -77,7 +86,6 @@ Feature: File Upload
77
86
  And I upload the image "image.png"
78
87
  And I wait for ajax response
79
88
  And I press "Submit"
80
- And I wait for ajax response
81
89
  And I edit "Vignesh has a complicated relationship"
82
90
  And I upload the image "image2.jpg"
83
91
  And I wait for ajax response
@@ -97,11 +105,7 @@ Feature: File Upload
97
105
  And I upload the image "image.png"
98
106
  And I wait for ajax response
99
107
  And I press "Submit"
100
- And I wait for ajax response
101
108
  And I edit "Vignesh has a complicated relationship"
102
109
  And I press "Submit"
103
- And I wait for ajax response
104
- Then within ".card-body" I should see an image of size "medium" and type "png"
105
- And I wait for ajax response
106
-
107
-
110
+ Then I should see "+image"
111
+ And I should see an image of size "medium" and type "png"
@@ -1,3 +1,4 @@
1
+ @wip
1
2
  @javascript
2
3
  Feature: Follow interface
3
4
  In order to make use of notifications
@@ -7,50 +8,50 @@ Feature: Follow interface
7
8
  Background:
8
9
  Given I am signed in as Joe User
9
10
 
10
- Scenario: Anonymous User should not see follow UI
11
- Given I follow "Sign out"
12
- When I go to the homepage
13
- And I open the main card menu
14
- Then I should not see "follow"
15
-
16
- Scenario: Following a Card
17
- Given Joe User is not watching "Home+*self"
18
- When I go to the homepage
19
- And I open the main card menu
20
- And In the main card menu I should not see "unfollow"
21
- And In the main card menu I click "follow"
22
- And I wait a sec
23
- And I close the modal window
24
- And I wait a sec
25
- And I open the main card menu
26
- Then In the main card menu I should see "unfollow"
27
- And the card Home+*self+Joe User+*follow should point to "always"
28
-
29
- Scenario: Unfollowing a Card
30
- Given Joe User is watching "Home+*self"
31
- And the card Home+*self+Joe User+*follow should point to "always"
32
- And I am on the homepage
33
- And I open the main card menu
34
- And In the main card menu I click "unfollow"
35
- And I wait a sec
36
- And I close the modal window
37
- And I wait a sec
38
- And I open the main card menu
39
- Then In the main card menu I should see "follow"
40
- And the card Home+*self+Joe User+*follow should point to "never"
41
-
42
-
43
- Scenario: Following a Cardtype
44
- When I go to card User
45
- And I open the main card menu
46
- Then In the main card menu I should see "follow"
47
-
48
- Scenario: A Card whose Cardtype is Followed
49
- Given Joe User is watching "User+*type"
50
- And I go to card Joe User
51
- And I open the main card menu
52
- Then In the main card menu I should see "(following)|unfollow"
53
- And I wait a sec
11
+ # Scenario: Anonymous User should not see follow UI
12
+ # Given I follow "Sign out"
13
+ # When I go to the homepage
14
+ # And I open the main card menu
15
+ # Then I should not see "follow"
16
+ #
17
+ # Scenario: Following a Card
18
+ # Given Joe User is not watching "Home+*self"
19
+ # When I go to the homepage
20
+ # And I open the main card menu
21
+ # And In the main card menu I should not see "unfollow"
22
+ # And In the main card menu I click "follow"
23
+ # And I wait a sec
24
+ # And I close the modal window
25
+ # And I wait a sec
26
+ # And I open the main card menu
27
+ # Then In the main card menu I should see "unfollow"
28
+ # And the card Home+*self+Joe User+*follow should point to "always"
29
+ #
30
+ # Scenario: Unfollowing a Card
31
+ # Given Joe User is watching "Home+*self"
32
+ # And the card Home+*self+Joe User+*follow should point to "always"
33
+ # And I am on the homepage
34
+ # And I open the main card menu
35
+ # And In the main card menu I click "unfollow"
36
+ # And I wait a sec
37
+ # And I close the modal window
38
+ # And I wait a sec
39
+ # And I open the main card menu
40
+ # Then In the main card menu I should see "follow"
41
+ # And the card Home+*self+Joe User+*follow should point to "never"
42
+ #
43
+ #
44
+ # Scenario: Following a Cardtype
45
+ # When I go to card User
46
+ # And I open the main card menu
47
+ # Then In the main card menu I should see "follow"
48
+ #
49
+ # Scenario: A Card whose Cardtype is Followed
50
+ # Given Joe User is watching "User+*type"
51
+ # And I go to card Joe User
52
+ # And I open the main card menu
53
+ # Then In the main card menu I should see "(following)|unfollow"
54
+ # And I wait a sec
54
55
 
55
56
  #too long for menu
56
57
  #
@@ -31,4 +31,4 @@ Feature: Navbox
31
31
  Then I should see "Search results"
32
32
  And I should see "Sample Skin"
33
33
  When I click on "2"
34
- Then I should see "superhero skin"
34
+ Then I should see "minty skin"
@@ -23,7 +23,7 @@ Feature: Notifications
23
23
  #FIXME these double quotes are ugly
24
24
  And I should see |You received this email because you're following "all "Phrases""| in the email body
25
25
  When I am signed in as Joe Admin
26
- And I follow "Unfollow" in the email
26
+ And I follow "Unfollow" in the email to "joe@admin.com"
27
27
  Then the card Phrase+*type+*followers should not point to "Joe Admin"
28
28
 
29
29
  Scenario: Watching a Card
@@ -11,9 +11,11 @@ Feature: Pointer Inputs
11
11
 
12
12
  Scenario: Creating a card with select input
13
13
  Given I create Phrase card "friends+*right+*input" with content "select"
14
+ And I wait for ajax response
14
15
  When I go to card "Joe User+friends"
15
16
  And I select "Joe Camel" from "Content"
16
17
  And I press "Submit"
18
+ And I wait for ajax response
17
19
  And I go to card "Joe User+friends"
18
20
  Then I should see "Joe Camel"
19
21
 
@@ -23,6 +25,7 @@ Feature: Pointer Inputs
23
25
  When I edit "Joe User"
24
26
  And I select "Joe Admin" from "+friends"
25
27
  And I press "Submit"
28
+ And I wait for ajax response
26
29
  And I go to card "Joe User"
27
30
  Then I should see "Joe Admin"
28
31
 
@@ -31,6 +34,7 @@ Feature: Pointer Inputs
31
34
  When I go to card "Joe User+friends"
32
35
  And I select "Joe Camel" from "Content"
33
36
  And I press "Submit"
37
+ And I wait for ajax response
34
38
  And I go to card "Joe User+friends"
35
39
  Then I should see "Joe Camel"
36
40
 
@@ -48,6 +52,7 @@ Feature: Pointer Inputs
48
52
  When I go to card "Joe User+friends"
49
53
  And I choose "Joe Camel"
50
54
  And I press "Submit"
55
+ And I wait for ajax response
51
56
  And I go to card "Joe User+friends"
52
57
  Then I should see "Joe Camel"
53
58
 
@@ -59,11 +64,13 @@ Feature: Pointer Inputs
59
64
  Then I should see "boom yow yow"
60
65
  And I check "Joe Camel"
61
66
  And I press "Submit"
67
+ And I wait for ajax response
62
68
  And I go to card "Joe User+friends"
63
69
  Then I should see "Joe Camel"
64
70
  And I edit "Joe User+friends"
65
71
  And I uncheck "Joe Camel"
66
72
  And I press "Submit"
73
+ And I wait for ajax response
67
74
  And I go to card "Joe User+friends"
68
75
  Then I should not see "Joe Camel"
69
76
 
@@ -9,13 +9,17 @@ Feature: Reference
9
9
 
10
10
  Scenario: Renaming a embed card
11
11
  When I create PlainText card "Vignesh" with content "Indian"
12
+ And I wait for ajax response
13
+ And I wait 2 seconds
12
14
  And I create PlainText card "Kawaii Man" with content "[[Vignesh]]"
15
+ And I wait for ajax response
13
16
  And I go to rename "Vignesh"
14
17
  And I fill in "card_name" with "Srivigneshwar"
15
18
  And I press "Rename"
19
+ And I wait for ajax response
16
20
  And I press "Rename and Update"
17
21
  And I wait for ajax response
18
- And I wait a sec
22
+ And I wait 2 seconds
19
23
  Then I go to card "Kawaii Man"
20
24
  And I should see "Srivigneshwar"
21
25
 
@@ -162,6 +162,10 @@ When /^(?:I|they) follow "([^"]*?)" in the email$/ do |link| # "<- stop textma
162
162
  visit_in_email(link)
163
163
  end
164
164
 
165
+ When /^(?:I|they) follow "([^"]*?)" in the email to "([^"]*?)"$/ do |link, address| # "<- stop textmate from treating the rest of the file as a string
166
+ visit_in_email(link, address)
167
+ end
168
+
165
169
  When /^(?:I|they) click the first link in the email$/ do
166
170
  click_first_link_in_email
167
171
  end
@@ -63,6 +63,7 @@ When wysiwyg_re do |username, cardname, content|
63
63
  visit "/card/edit/#{cardname.to_name.url_key}"
64
64
  page.execute_script "$('#main .d0-card-content').val('#{content}')"
65
65
  click_button "Submit"
66
+ wait_for_ajax
66
67
  end
67
68
  end
68
69
 
@@ -72,6 +73,7 @@ When edit_re do |username, cardname, _field, content|
72
73
  visit "/card/edit/#{cardname.to_name.url_key}"
73
74
  set_content "card[content]", content
74
75
  click_button "Submit"
76
+ wait_for_ajax
75
77
  end
76
78
  end
77
79
 
@@ -88,6 +90,7 @@ When /^(.*) edits? "([^\"]*)" with plusses:/ do |username, cardname, plusses|
88
90
  set_content "card[subcards][#{cardname}+#{name}][content]", content
89
91
  end
90
92
  click_button "Submit"
93
+ wait_for_ajax
91
94
  end
92
95
  end
93
96
 
@@ -276,13 +279,13 @@ end
276
279
 
277
280
  When /^In (.*) I find link with icon "(.*)" and click it$/ do |section, icon|
278
281
  within scope_of(section) do
279
- find("a > span.glyphicon-#{icon}").click
282
+ find("a > i.material-icons", text: icon).click
280
283
  end
281
284
  end
282
285
 
283
286
  When /^In (.*) I find button with icon "(.*)" and click it$/ do |section, icon|
284
287
  within scope_of(section) do
285
- find("button > span.glyphicon-#{icon}").click
288
+ find("button > i.material-icons", text: icon).click
286
289
  end
287
290
  end
288
291
 
@@ -295,7 +298,7 @@ Then /I submit$/ do
295
298
  end
296
299
 
297
300
  When /^I open the main card menu$/ do
298
- slot = "$('#main .menu-slot .vertical-card-menu.show-on-hover .card-slot')"
301
+ slot = "$('#main .menu-slot .vertical-card-menu._show-on-hover .card-slot')"
299
302
  page.execute_script "#{slot}.show()"
300
303
  page.find("#main .menu-slot .card-menu a").click
301
304
  end
@@ -25,6 +25,7 @@ end
25
25
 
26
26
  When /^(?:|I )press "([^"]*)"$/ do |button|
27
27
  click_button(button)
28
+ wait_for_ajax if button == "Submit" && @javascript
28
29
  end
29
30
 
30
31
  When /^(?:|I )follow "([^"]*)"$/ do |link|
@@ -1,4 +1,5 @@
1
1
  Before("@delayed-jobs") do
2
+ ActiveJob::Base.queue_adapter = :delayed_job
2
3
  Delayed::Worker.delay_jobs = true
3
4
  end
4
5
 
@@ -5,8 +5,8 @@ require "decko"
5
5
  require File.join Decko.card_gem_root, "spec/support/simplecov_helper.rb"
6
6
  require "simplecov"
7
7
  require "minitest/autorun"
8
+ require "rspec"
8
9
 
9
- require "rspec/expectations"
10
10
  World(RSpec::Matchers)
11
11
  require "rspec-html-matchers"
12
12
  World(RSpecHtmlMatchers)
@@ -42,10 +42,13 @@ at_exit do
42
42
  Card.seed_test_db
43
43
  end
44
44
 
45
+ Before("@javascript") do
46
+ @javascript = true
47
+ end
45
48
 
46
49
  require "cucumber/rails"
47
50
  Cucumber::Rails::Database.autorun_database_cleaner = false
48
- require "test_after_commit"
51
+ # require "test_after_commit"
49
52
 
50
53
  Capybara.register_driver :selenium do |app|
51
54
  Capybara::Selenium::Driver.new(app, browser: :chrome)
@@ -7,21 +7,23 @@ Feature: Toolbar
7
7
  Background:
8
8
  Given I am signed in as Joe Admin
9
9
  And I go to card "Home"
10
+ And I wait for ajax response
10
11
  And I open the main card menu
12
+ And I wait for ajax response
11
13
  And I follow "edit"
12
14
 
13
15
  Scenario: close toolbar
14
16
  Then In main card frame I should see a nav with class "toolbar"
15
- When In main card toolbar I find link with icon "remove" and click it
17
+ When In main card toolbar I find link with icon "close" and click it
16
18
  Then In main card frame I should not see a nav with class "toolbar"
17
19
 
18
- Scenario: pin and unpin toolbar
19
- When In main card toolbar I find button with icon "pushpin" and click it
20
- And I wait for ajax response
21
- And I go to card "Home"
22
- Then In main card frame I should see a nav with class "toolbar"
23
- And In main card toolbar I should see a button with class "toolbar-pin.active"
24
- When In main card toolbar I find button with icon "pushpin" and click it
25
- And I wait for ajax response
26
- And I go to card "Home"
27
- Then In main card frame I should not see a nav with class "toolbar"
20
+ #Scenario: pin and unpin toolbar
21
+ # When In main card toolbar I find button with icon "pushpin" and click it
22
+ # And I wait for ajax response
23
+ # And I go to card "Home"
24
+ # Then In main card frame I should see a nav with class "toolbar"
25
+ # And In main card toolbar I should see a button with class "toolbar-pin.active"
26
+ # When In main card toolbar I find button with icon "pushpin" and click it
27
+ # And I wait for ajax response
28
+ # And I go to card "Home"
29
+ # Then In main card frame I should not see a nav with class "toolbar"
@@ -1,6 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  require "decko/engine"
4
+ require_relative "config/initializers/sedate_parser"
4
5
 
5
6
  if defined?(Bundler)
6
7
  # If you precompile assets before deploying to production, use this line
@@ -13,7 +13,7 @@ module Decko
13
13
 
14
14
  def command
15
15
  @cmd ||=
16
- "#{env_args} bundle exec cucumber #{require_args} #{feature_args}"
16
+ "#{env_args} #{@opts[:executer] || "bundle exec"} cucumber #{require_args} #{feature_args}"
17
17
  end
18
18
 
19
19
  private
@@ -40,7 +40,7 @@ module Decko
40
40
  end
41
41
 
42
42
  def feature_paths
43
- Card::Mod::Loader.mod_dirs.map do |p|
43
+ Card::Mod.dirs.map do |p|
44
44
  Dir.glob "#{p}/features"
45
45
  end.flatten
46
46
  end