decko 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e1d40251dde9014b769f25491f95ceec087bc1f
4
- data.tar.gz: d3689601443aee3e90c2da2b3fe85690bcd43a2f
3
+ metadata.gz: 953bbfc987bc5b3777a2aa3eac096a7637eb2248
4
+ data.tar.gz: 51d1f2f8032fbd00f56b97beb53076a5387aa751
5
5
  SHA512:
6
- metadata.gz: 32a9536de63f6ec90c3431471ad888e7769de2751a6efe7d1230003f362db3d61a0dcb6af54bbdf0a0110f67005bfab602c037be53e53f1db1e7c5420c856a49
7
- data.tar.gz: e01e70cec3d7234c69bc77d9b0297d81d1b4ead61d97eab5012b5fb5ee746d41cd455d580e4c68ea5c97210377a34c209bcd448efa3613b1052cb0a17f176cb6
6
+ metadata.gz: 564a3f49721deba98ae3de3c0f326da1861aaf8800bef5ebfc624d6b855e927cb4ec970b77096dae606237004258b204d9f1c8bc9dd248869e0d83ec281bdef6
7
+ data.tar.gz: 732ee8bebbedfd297aad152c368c5ca4bf478e66629f96dfcbe80b030126aac4c8b8a9e0fad5d099236edccac685d0dbeb74f9689a15364c7c2ee0039659e144
data/README.rdoc CHANGED
@@ -17,7 +17,7 @@ Try it out with automated setup at Cloudstore[https://cldstr.com/wagn.org/wagn]
17
17
 
18
18
  ==System Requirements
19
19
 
20
- Ruby[http://www.ruby-lang.org/en/]:: version 2.2.2 or higher
20
+ Ruby[http://www.ruby-lang.org/en/]:: version 2.3 or higher
21
21
  Bundler[http://gembundler.com/]:: version 1.0 or higher
22
22
  ImageMagick[http://www.imagemagick.org/]::
23
23
  A database engine:: Either MySQL[http://www.mysql.com/] or PostgreSQL[http://www.postgresql.org/]
data/decko.gemspec CHANGED
@@ -31,7 +31,7 @@ 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 = ">= 2.2.2"
34
+ s.required_ruby_version = ">= 2.3"
35
35
 
36
36
  [
37
37
  ["rails", "~> 5.1"],
@@ -6,11 +6,8 @@ Feature: Layouts
6
6
 
7
7
  Background:
8
8
  Given I am signed in as Joe Admin
9
- And I create HTML card "simple layout" with content "Simple Header {{_main}} Simple Footer"
9
+ And I create Layout card "simple layout" with content "Simple Header {{_main}} Simple Footer"
10
10
  And the card "*all+*layout" contains "[[simple layout]]"
11
- And I create Pointer card "User+*type+*layout" with content "[[user layout]]"
12
- And I create HTML card "user layout" with content "User Header {{_main}}"
13
- And I wait for ajax response
14
11
 
15
12
  Scenario: I visit a Basic card with the simple layout
16
13
  When I go to card "*account links"
@@ -18,6 +15,9 @@ Feature: Layouts
18
15
  And I should see "Joe Admin"
19
16
 
20
17
  Scenario: I visit a User card with the user layout
18
+ Given I create Layout card "user layout" with content "User Header {{_main}}"
19
+ And I create Pointer card "User+*type+*layout" with content "[[user layout]]"
20
+ And I wait 1 seconds
21
21
  When I go to card "Joe User"
22
22
  Then I should see "User Header"
23
23
 
@@ -1,6 +1,6 @@
1
1
  Feature: Presetting content
2
2
  In order to have an easy to use interface for creating cards
3
- As a Wagneer
3
+ As a Decker
4
4
  I want to be able to create links specifying content for plus cards of templated cards
5
5
 
6
6
  Scenario: User age
@@ -1,7 +1,7 @@
1
1
  @javascript
2
2
  Feature: Reference
3
3
  In order to connect related cards
4
- As a Wagneer
4
+ As a Decker
5
5
 
6
6
  Background:
7
7
  Given I am signed in as Joe Admin
@@ -10,16 +10,16 @@ Feature: Reference
10
10
  Scenario: Renaming a embed card
11
11
  When I create PlainText card "Vignesh" with content "Indian"
12
12
  And I wait for ajax response
13
- And I wait 2 seconds
14
13
  And I create PlainText card "Kawaii Man" with content "[[Vignesh]]"
15
14
  And I wait for ajax response
15
+ Then I should see "Vignesh"
16
+ And I wait for ajax response
16
17
  And I go to rename "Vignesh"
17
18
  And I fill in "card_name" with "Srivigneshwar"
18
19
  And I press "Rename"
19
- And I wait for ajax response
20
+ And I wait 2 seconds
20
21
  And I press "Rename and Update"
21
- And I wait for ajax response
22
- And I wait 4 seconds
22
+ And I wait 2 seconds
23
23
  Then I go to card "Kawaii Man"
24
24
  And I should see "Srivigneshwar"
25
25
 
@@ -1,7 +1,7 @@
1
1
  @javascript
2
2
  Feature: Set-based Rles
3
3
  In order to control settings in an efficient way
4
- As a Wagneer
4
+ As a Decker
5
5
  I want to be able to control rules for sets of cards
6
6
 
7
7
  Background:
@@ -1,11 +1,11 @@
1
1
  Feature: Setting up
2
2
  In order to be able to start a new Wagn site
3
- As a Wagneer
3
+ As a Decker
4
4
  I want to setup an initial account
5
5
 
6
6
  Background:
7
7
 
8
- Scenario: Wagneer visits site for first time
8
+ Scenario: Decker visits site for first time
9
9
  Given site simulates setup need
10
10
  #done here bc cache gets cleared otherwise
11
11
 
@@ -186,7 +186,7 @@ When /I wait a sec/ do
186
186
  sleep 1
187
187
  end
188
188
 
189
- When /I wait (\d+) seconds$/ do |period|
189
+ When /I wait (\d+) seconds?$/ do |period|
190
190
  sleep period.to_i
191
191
  end
192
192
 
@@ -293,6 +293,14 @@ Given /^Jobs are dispatched$/ do
293
293
  Delayed::Worker.new.work_off
294
294
  end
295
295
 
296
+ Then /^No errors in the job queue$/ do
297
+ if (last = Delayed::Job.last) && (last.last_error)
298
+ puts last.last_error
299
+ expect(last.last_error).to be_blank
300
+ end
301
+ end
302
+
303
+
296
304
  Then /I submit$/ do
297
305
  click_button "Submit"
298
306
  end
@@ -25,7 +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
+ wait_for_ajax if @javascript && (button == "Submit" || button =~ /rename/i)
29
29
  end
30
30
 
31
31
  When /^(?:|I )follow "([^"]*)"$/ do |link|
@@ -34,6 +34,7 @@ end
34
34
 
35
35
  When /^(?:|I )click on "([^"]*)"$/ do |link|
36
36
  click_link_or_button(link)
37
+ wait_for_ajax
37
38
  end
38
39
 
39
40
  When /^(?:|I )follow "([^"]*)" within "([^"]*)"$/ do |link, parent|
@@ -1,7 +1,7 @@
1
1
  @javascript
2
2
  Feature: Structure Rules
3
3
  In order to have patterned content
4
- As a Wagneer
4
+ As a Decker
5
5
  I want to manage structure through rules
6
6
 
7
7
  Background:
@@ -1,5 +1,6 @@
1
+ Card.config.active_job.queue_adapter = :delayed_job
2
+
1
3
  Before("@delayed-jobs") do
2
- ActiveJob::Base.queue_adapter = :delayed_job
3
4
  Delayed::Worker.delay_jobs = true
4
5
  end
5
6
 
@@ -20,7 +20,7 @@ $feature_seeded ||= ::Set.new
20
20
  # newer version of cucumber-rails. Consider adding your own code to a new file
21
21
  # instead of editing this one. Cucumber will automatically load all
22
22
  # features/**/*.rb files.
23
- Before("@background-jobs, @delayed-jobs, @javascript") do |scenario|
23
+ Before("@background-jobs or @delayed-jobs or @javascript") do |scenario|
24
24
  # DatabaseCleaner.strategy = :truncation
25
25
  Card.seed_test_db unless $feature_seeded.include?(scenario.feature.name)
26
26
  end
@@ -47,7 +47,7 @@ Before("@javascript") do
47
47
  end
48
48
 
49
49
  Before do
50
- Capybara.page.current_window.resize_to(1440, 900)
50
+ Capybara.page.current_window.resize_to 1440, 1280
51
51
  end
52
52
 
53
53
  require "cucumber/rails"
@@ -7,6 +7,5 @@ Capybara.configure do |config|
7
7
  end
8
8
 
9
9
  Before do
10
- Card::Cache.reset_hard
11
- Card::Cache.reset_soft
10
+ Card::Cache.reset
12
11
  end
@@ -1,7 +1,7 @@
1
1
  @javascript
2
2
  Feature: Table of Contents
3
3
  In order to add a table of contents to a card
4
- As a Wagneer
4
+ As a Decker
5
5
  I want to be able to set a minimum header number
6
6
 
7
7
  Background:
@@ -1,7 +1,7 @@
1
1
  @javascript
2
2
  Feature: Toolbar
3
3
  In order to edit a card
4
- As a Wagneer
4
+ As a Decker
5
5
  I want to be able to use the toolbar
6
6
 
7
7
  Background:
@@ -51,12 +51,14 @@ Feature: Updates for Children of watched cards
51
51
  When I edit "Banana" with plusses:
52
52
  |color|flavor|
53
53
  |spotted|mushy|
54
+ And I wait 1 second
54
55
  Then Joe Camel should be notified that "Joe User updated \"Banana\""
55
56
  When Joe Camel is watching "Banana+*self"
56
57
  And I wait a sec
57
58
  And I edit "Banana" with plusses:
58
59
  |color|flavor|
59
60
  |green|mushy|
61
+ And I wait 1 second
60
62
  Then Joe Camel should be notified that "Joe User updated \"Banana\""
61
63
  Given a clear email queue
62
64
  And I edit "Banana" with plusses:
@@ -20,6 +20,10 @@ module Decko
20
20
  end
21
21
  end
22
22
 
23
+ initializer :load_card, after: :load_config_initializers, group: :all do
24
+ Card
25
+ end
26
+
23
27
  class << self
24
28
  def inherited base
25
29
  super
@@ -58,6 +62,7 @@ module Decko
58
62
  config.i18n.enforce_available_locales = true
59
63
  # config.active_record.raise_in_transactional_callbacks = true
60
64
 
65
+ config.allow_concurrency = false
61
66
  config.assets.enabled = false
62
67
  config.assets.version = "1.0"
63
68
 
@@ -71,7 +76,6 @@ module Decko
71
76
  paths = super
72
77
  Cardio.set_paths paths
73
78
 
74
- paths["mod"] << "mod"
75
79
  paths.add "files"
76
80
 
77
81
  paths["app/models"] = []
@@ -82,8 +86,6 @@ module Decko
82
86
  with: "rails/application-routes.rb"
83
87
  end
84
88
 
85
- Cardio.set_mod_paths # really this should happen later
86
-
87
89
  paths
88
90
  end
89
91
  end
@@ -58,8 +58,6 @@ Decko.application.class.configure do
58
58
  # true in your test
59
59
  Delayed::Worker.delay_jobs = false
60
60
 
61
-
62
-
63
61
  # Use Pry instead of IRB
64
62
  silence_warnings do
65
63
  begin
@@ -27,7 +27,7 @@ gem '<%= database_gemfile_entry.name %>'<%= %(, '#{database_gemfile_entry.versio
27
27
  group :test do
28
28
  gem 'rails-controller-testing'
29
29
  gem 'rspec'
30
- gem 'rspec-rails' # behavior-driven-development suite
30
+ gem 'rspec-rails', '~>3.6.1' # behavior-driven-development suite
31
31
  gem 'spork', '>=0.9'
32
32
  gem 'rubocop'
33
33
  gem 'rubocop-decko'
@@ -0,0 +1,10 @@
1
+ defaults: &defaults
2
+
3
+ development:
4
+ <<: *defaults
5
+
6
+ test:
7
+ <<: *defaults
8
+
9
+ production:
10
+ <<: *defaults
@@ -11,35 +11,27 @@ CARD_TASKS =
11
11
 
12
12
  link_task CARD_TASKS, from: :decko, to: :card
13
13
 
14
- namespace :decko do
14
+ decko_namespace = namespace :decko do
15
15
  desc "create a decko database from scratch, load initial data"
16
16
  task :seed do
17
- ENV["SCHEMA"] ||= "#{Cardio.gem_root}/db/schema.rb"
18
- puts "dropping"
19
- # FIXME: this should be an option, but should not happen on standard
20
- # creates!
21
- begin
22
- Rake::Task["db:drop"].invoke
23
- rescue
24
- puts "not dropped"
25
- end
26
-
27
- puts "creating"
28
- Rake::Task["db:create"].invoke
29
-
30
- puts "loading schema"
31
- Rake::Task["db:schema:load"].invoke
17
+ seed
18
+ end
32
19
 
33
- Rake::Task["decko:load"].invoke
20
+ desc "create a decko database from scratch, load initial data, don't reset the cache"
21
+ task :seed_without_reset do
22
+ # This variant is needed to generate test databases for decks
23
+ # with custom codenames.
24
+ # The cache reset loads the environment. That tends to fail
25
+ # because of missing codenames that are added after the intial decko seed.
26
+ seed with_cache_reset: false
34
27
  end
35
28
 
36
29
  desc "clear and load fixtures with existing tables"
37
30
  task reseed: :environment do
38
31
  ENV["SCHEMA"] ||= "#{Cardio.gem_root}/db/schema.rb"
39
32
 
40
- Rake::Task["decko:clear"].invoke
41
-
42
- Rake::Task["decko:load"].invoke
33
+ decko_namespace["clear"].invoke
34
+ decko_namespace["load"].invoke
43
35
  end
44
36
 
45
37
  desc "empty the card tables"
@@ -54,23 +46,27 @@ namespace :decko do
54
46
 
55
47
  desc "Load bootstrap data into database"
56
48
  task :load do
49
+ decko_namespace["load_without_reset"].invoke
50
+ puts "reset cache"
51
+ system "bundle exec rake decko:reset_cache" # needs loaded environment
52
+ end
53
+
54
+ desc "Load bootstrap data into database but don't reset cache"
55
+ task :load_without_reset do
57
56
  require "decko/engine"
58
57
  puts "update card_migrations"
59
- Rake::Task["decko:assume_card_migrations"].invoke
58
+ decko_namespace["assume_card_migrations"].invoke
60
59
 
61
60
  if Rails.env == "test" && !ENV["GENERATE_FIXTURES"]
62
61
  puts "loading test fixtures"
63
62
  Rake::Task["db:fixtures:load"].invoke
64
63
  else
65
64
  puts "loading bootstrap"
66
- Rake::Task["decko:bootstrap:load"].invoke
65
+ decko_namespace["bootstrap:load"].invoke
67
66
  end
68
67
 
69
68
  puts "set symlink for assets"
70
- Rake::Task["decko:update_assets_symlink"].invoke
71
-
72
- puts "reset cache"
73
- system "bundle exec rake decko:reset_cache" # needs loaded environment
69
+ decko_namespace["update_assets_symlink"].invoke
74
70
  end
75
71
 
76
72
  desc "update decko gems and database"
@@ -81,10 +77,10 @@ namespace :decko do
81
77
  FileUtils.rm_rf Decko.paths["tmp"].first, secure: true
82
78
  end
83
79
  Dir.mkdir Decko.paths["tmp"].first
84
- Rake::Task["decko:migrate"].invoke
80
+ decko_namespace["migrate"].invoke
85
81
  # FIXME: remove tmp dir / clear cache
86
82
  puts "set symlink for assets"
87
- Rake::Task["decko:update_assets_symlink"].invoke
83
+ decko_namespace["update_assets_symlink"].invoke
88
84
  end
89
85
 
90
86
  desc "set symlink for assets"
@@ -106,6 +102,28 @@ namespace :decko do
106
102
  Cardio.assume_migrated_upto_version :core_cards
107
103
  end
108
104
 
105
+ def seed with_cache_reset: true
106
+ ENV["SCHEMA"] ||= "#{Cardio.gem_root}/db/schema.rb"
107
+ # FIXME: this should be an option, but should not happen on standard
108
+ # creates!
109
+ begin
110
+ Rake::Task["db:drop"].invoke
111
+ rescue
112
+ puts "not dropped"
113
+ end
114
+
115
+ puts "creating"
116
+ Rake::Task["db:create"].invoke
117
+
118
+ puts "loading schema"
119
+
120
+ Rake::Task["db:schema:load"].invoke
121
+
122
+ load_task = "decko:load"
123
+ load_task << "_without_reset" unless with_cache_reset
124
+ Rake::Task[load_task].invoke
125
+ end
126
+
109
127
  namespace :emergency do
110
128
  task rescue_watchers: :environment do
111
129
  follower_hash = Hash.new { |h, v| h[v] = [] }
@@ -60,13 +60,6 @@ class CardController < ActionController::Base
60
60
  Card::Machine.refresh_script_and_style if Rails.env.development?
61
61
  Card::Cache.renew
62
62
  Card::Env.reset controller: self
63
- # unprotect_card_params!
64
- end
65
-
66
- def unprotect_card_params!
67
- # FIXME: always wear protection
68
- return unless params[:card].is_a? ActionController::Parameters
69
- params[:card].to_unsafe_h
70
63
  end
71
64
 
72
65
  def authenticate
@@ -99,11 +92,11 @@ class CardController < ActionController::Base
99
92
 
100
93
  def render_success
101
94
  success = Card::Env.success
102
- success.name_context = @card.cardname
95
+ success.name_context = @card.name
103
96
  if !Card::Env.ajax? || success.hard_redirect?
104
97
  card_redirect success.to_url
105
98
  elsif success.target.is_a? String
106
- render text: success.target
99
+ render! text: success.target
107
100
  else
108
101
  reset_card success.target
109
102
  show
@@ -118,10 +111,11 @@ class CardController < ActionController::Base
118
111
 
119
112
  view ||= params[:view]
120
113
  result = card.act do
121
- format.page view, Card::Env.slot_opts
114
+ format.page self, view, Card::Env.slot_opts
122
115
  end
123
116
 
124
117
  status = format.error_status || status
118
+ # puts "RESULT: #{format.class}/#{status}"
125
119
  deliver format, result, status
126
120
  end
127
121
 
@@ -1,5 +1,5 @@
1
1
 
2
- describe "Global Wagn variable", ->
2
+ describe "Global decko variable", ->
3
3
  it "should be defined", ->
4
4
  expect(decko).toBeDefined
5
5
 
@@ -13,21 +13,21 @@ describe "card-form", ->
13
13
 
14
14
  it "should be able to populate the content field based on nearby selector", ->
15
15
  $('.tinymce-textarea').setContentField -> 1+2
16
- expect($('.card-content')).toHaveValue '3'
16
+ expect($('.d0-card-content')).toHaveValue '3'
17
17
 
18
18
  it "should be able to populate all content fields in a form", ->
19
19
  $('form').setContentFields '.tinymce-textarea', -> 2+2
20
- expect($('.card-content')).toHaveValue '4'
20
+ expect($('.d0-card-content')).toHaveValue '4'
21
21
 
22
22
  it "should be able to populate content fields from a map", ->
23
23
  $('form').setContentFieldsFromMap { '.tinymce-textarea': -> 3+2 }
24
- expect($('.card-content')).toHaveValue '5'
24
+ expect($('.d0-card-content')).toHaveValue '5'
25
25
 
26
26
  it "should be able to find the slot from any element within", ->
27
- expect($('.card-content').slot()).toHaveClass 'card-slot'
27
+ expect($('.d0-card-content').slot()).toHaveClass 'card-slot'
28
28
 
29
29
  it "should be able to populate slot from any element within", ->
30
- $('.card-content').setSlotContent '<div class="card-slot">whoopee</div>'
30
+ $('.d0-card-content').setSlotContent '<div class="card-slot">whoopee</div>'
31
31
  expect($('.card-slot')).toHaveHtml 'whoopee'
32
32
 
33
33
 
@@ -5,6 +5,6 @@ require "rails/performance_test_help"
5
5
  class RenderTest < ActionDispatch::PerformanceTest
6
6
  Card
7
7
  def render_test
8
- Card.new(name: "hi", content: "{{+plus1}} {{+plus2}} {{+plus3}}" .format).render :core
8
+ Card.new(name: "hi", content: "{{+plus1}} {{+plus2}} {{+plus3}}" .format).render! :core
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decko
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan McCutchen
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2017-10-09 00:00:00.000000000 Z
14
+ date: 2017-10-31 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -33,14 +33,14 @@ dependencies:
33
33
  requirements:
34
34
  - - '='
35
35
  - !ruby/object:Gem::Version
36
- version: 1.92.2
36
+ version: 1.93.0
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - '='
42
42
  - !ruby/object:Gem::Version
43
- version: 1.92.2
43
+ version: 1.93.0
44
44
  description: a wiki approach to stuctured data, dynamic interaction, and web design
45
45
  email:
46
46
  - info@decko.org
@@ -151,6 +151,7 @@ files:
151
151
  - lib/decko/generators/decko/templates/config/databases/oracle.yml
152
152
  - lib/decko/generators/decko/templates/config/databases/postgresql.yml
153
153
  - lib/decko/generators/decko/templates/config/databases/sqlite3.yml
154
+ - lib/decko/generators/decko/templates/config/deck.yml
154
155
  - lib/decko/generators/decko/templates/config/environment.rb
155
156
  - lib/decko/generators/decko/templates/config/routes.erb
156
157
  - lib/decko/generators/decko/templates/gitignore
@@ -769,7 +770,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
769
770
  requirements:
770
771
  - - ">="
771
772
  - !ruby/object:Gem::Version
772
- version: 2.2.2
773
+ version: '2.3'
773
774
  required_rubygems_version: !ruby/object:Gem::Requirement
774
775
  requirements:
775
776
  - - ">="