graph_starter 0.15.5 → 0.15.6

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: 5cc82c346899feb9018ae55485a4819f1c94c373
4
- data.tar.gz: 0ed8f9e24fbece6fdc19a646ef9cefc46f9d7315
3
+ metadata.gz: 846d2b3c24ae439f3e2431a4cfc1662fdf320f47
4
+ data.tar.gz: 7d0bb849a37a60e4c77f5318288ee82282fecc5e
5
5
  SHA512:
6
- metadata.gz: aa4f4da974616a2271132ae5db5fe4c621f5880e9965b7fdc2eccfc97ce845c202912b796289c94b769a939bfba257bb586171125ab3302123eb7abfea696a05
7
- data.tar.gz: 1af8ab75b2d8a1bc739ce0e12b0cbbd298d1d35b5e02bb93c3f05bf739e57df97e44339b98bae7d9c93d84522825a164bb4dd0ddeba2a36f15250a750d5620ff
6
+ metadata.gz: 1f27817808730ca4c850a96bd5551d843b9fadb1be1d2c76de88dccce7e09da1701d6aa6c891e30aa631fd426a84418a3373bade7fe92481630ee73d31984de9
7
+ data.tar.gz: f58a50e1a8dd9b1749c76123d71c647db8c33d3f1fb6b69de20ed6f80dad8ebe875aa38b6729f1dc79e773b8b638075c0bcfc0a9286799114f87ddc5b3d66b1e
@@ -11,7 +11,7 @@ module GraphStarter
11
11
  def render_body(asset, model_slug)
12
12
  views = Dir.glob(Rails.root.join("app/views/#{model_slug}/_body.html.*"))
13
13
 
14
- partial_path = views.present? ? "#{model_slug}/body" : 'body'
14
+ partial_path = views.present? ? "#{model_slug}/body" : '/graph_starter/assets/body'
15
15
 
16
16
  render partial: partial_path, locals: {asset: asset}
17
17
  end
@@ -1,4 +1,5 @@
1
1
  require 'graph_starter/query_authorizer'
2
+ require 'babosa'
2
3
 
3
4
  module GraphStarter
4
5
  class Asset
@@ -11,6 +12,28 @@ module GraphStarter
11
12
 
12
13
  property :summary
13
14
 
15
+
16
+ # This is doing something strange, commenting out for now...
17
+ # def self.inherited(subclass)
18
+ # subclass.property :slug
19
+ # subclass.before_validation :place_slug
20
+ # subclass.validates :slug, presence: true
21
+ # subclass.constraint :slug, type: :unique
22
+ # end
23
+
24
+ def place_slug
25
+ return if self.slug.present?
26
+
27
+ name_value = read_attribute(self.class.name_property)
28
+ self.slug = self.class.unique_slug_from(name_value)
29
+ name_value.to_slug.normalize.to_s if name_value
30
+ end
31
+
32
+ def self.unique_slug_from(string)
33
+ base = string.to_slug.normalize.to_s
34
+ end
35
+
36
+
14
37
  if GraphStarter.configuration.user_class
15
38
  #has_many :in, :creators, type: :CREATED, model_class: GraphStarter.configuration.user_class
16
39
 
@@ -95,7 +118,7 @@ module GraphStarter
95
118
  def self.enumerable_property(property_name, values)
96
119
  fail "values needs to be an Array, was #{values.inspect}" if !values.is_a?(Array)
97
120
 
98
- validates :status, inclusion: {in: values}
121
+ validates property_name.to_sym, inclusion: {in: values}
99
122
 
100
123
  enumerable_property_values[self.name.to_sym] ||= {}
101
124
  enumerable_property_values[self.name.to_sym][property_name.to_sym] ||= values
@@ -1,17 +1,18 @@
1
- .ui.buttons
2
- a.ui.labeled.icon.button.right.floated data-authorizable="#{asset.to_json}"
3
- | Permissions
1
+ - if asset.persisted?
2
+ .ui.buttons
3
+ a.ui.labeled.icon.button.right.floated data-authorizable="#{asset.to_json}"
4
+ | Permissions
4
5
 
5
- .or
6
+ .or
6
7
 
7
- a.ui.labeled.icon.button.right.floated href="#{edit_asset_path(id: asset)}"
8
- i.edit.icon
9
- | Edit
8
+ a.ui.labeled.icon.button.right.floated href="#{graph_starter.edit_asset_path(id: asset)}"
9
+ i.edit.icon
10
+ | Edit
10
11
 
11
- .ui.divider
12
+ .ui.divider
12
13
 
13
- a.ui.labeled.icon.red.button.right.floated href="#{destroy_asset_path(id: asset)}"
14
- i.delete.icon
15
- | Delete
14
+ a.ui.labeled.icon.red.button.right.floated href="#{graph_starter.destroy_asset_path(id: asset)}"
15
+ i.delete.icon
16
+ | Delete
16
17
 
17
18
 
@@ -10,12 +10,12 @@
10
10
  - if as_cards
11
11
  .ui.link.cards
12
12
  - Array(result).each do |object|
13
- = render partial: 'card', locals: {asset: object}
13
+ = render partial: '/graph_starter/assets/card', locals: {asset: object}
14
14
  - else
15
15
  .ui.middle.aligned.big.divided.list
16
16
  - Array(result).each do |object|
17
17
  .item
18
18
  .content
19
- = render partial: 'icon', locals: {asset: object}
19
+ = render partial: '/graph_starter/assets/icon', locals: {asset: object}
20
20
  = link_to object.title, asset_path(object)
21
21
 
@@ -1,3 +1,3 @@
1
1
  - if asset.body.present?
2
2
  = asset.body
3
- = render partial: 'images', locals: {asset: asset}
3
+ = render partial: '/graph_starter/assets/images', locals: {asset: asset}
@@ -14,24 +14,24 @@ javascript:
14
14
  .ui.grid
15
15
  - if asset_presenter.left_sidebar_exists?
16
16
  div class="#{left_width} wide column"
17
- = render partial: 'dynamic_items', locals: {asset: @asset}
17
+ = render partial: '/graph_starter/assets/dynamic_items', locals: {asset: @asset}
18
18
 
19
19
  - if asset_presenter.main_column_exists?
20
20
  div class="#{center_width} wide column"
21
21
  - if asset_presenter.associations_in_body?
22
- = render partial: 'associations', locals: {asset: @asset, as_cards: true}
22
+ = render partial: '/graph_starter/assets/associations', locals: {asset: @asset, as_cards: true}
23
23
  - else
24
24
  = render_body(@asset, @model_slug)
25
25
 
26
26
  div class="#{right_width} wide column" id="right-column"
27
27
  - if app_user_is_admin?
28
- = render partial: 'admin_buttons', locals: {asset: @asset}
28
+ = render partial: '/graph_starter/assets/admin_buttons', locals: {asset: @asset}
29
29
 
30
30
  - if !asset_presenter.left_sidebar_exists?
31
31
  .ui.items
32
32
  - if !asset_presenter.associations_in_body?
33
- = render partial: 'associations', locals: {asset: @asset}
34
- = render partial: 'recommendations', locals: {asset: @asset}
33
+ = render partial: '/graph_starter/assets/associations', locals: {asset: @asset}
34
+ = render partial: '/graph_starter/assets/recommendations', locals: {asset: @asset}
35
35
 
36
- = render partial: 'property_items', locals: {asset: @asset}
36
+ = render partial: '/graph_starter/assets/property_items', locals: {asset: @asset}
37
37
 
@@ -1,3 +1,3 @@
1
1
  module GraphStarter
2
- VERSION = "0.15.5"
2
+ VERSION = "0.15.6"
3
3
  end
@@ -0,0 +1,35 @@
1
+ # require './spec/rails_helper'
2
+ #
3
+ # describe 'Asset slugs' do
4
+ # class Foo < GraphStarter::Asset
5
+ # property :title
6
+ #
7
+ # name_property :title
8
+ # end
9
+ #
10
+ # before { clear_db }
11
+ #
12
+ # describe '.unique_slug_from' do
13
+ # subject { GraphStarter::Asset.unique_slug_from(string) }
14
+ #
15
+ # context 'Without assets with slugs' do
16
+ # let_context string: 'Test title' do
17
+ # it { should eq 'test-title' }
18
+ # end
19
+ #
20
+ # let_context string: 'Gölcük, Turkey Number 2!' do
21
+ # it { should eq 'golcuk-turkey-number-2' }
22
+ # end
23
+ # end
24
+ #
25
+ # context 'With existing asset slugs' do
26
+ # before { Foo.create(title: 'Gölcük, Turkey', slug: 'golcuk-turkey') }
27
+ #
28
+ # let_context string: 'Gölcük, Turkey!' do
29
+ # it { should eq 'golcuk-turkey-2' }
30
+ # end
31
+ # end
32
+ #
33
+ # end
34
+ # end
35
+
@@ -1,3 +1,29 @@
1
+
2
+ # Introduces `let_context` helper method
3
+ # This allows us to simplify the case where we want to
4
+ # have a context which contains one or more `let` statements
5
+ module LetContextHelpers
6
+ # Supports giving either a Hash or a String and a Hash as arguments
7
+ # In both cases the Hash will be used to define `let` statements
8
+ # When a String is specified that becomes the context description
9
+ # If String isn't specified, Hash#inspect becomes the context description
10
+ def let_context(*args, &block)
11
+ classes = args.map(&:class)
12
+ context_string, hash =
13
+ case classes
14
+ when [String, Hash] then ["#{args[0]} #{args[1]}", args[1]]
15
+ when [Hash] then args + args
16
+ end
17
+
18
+ context(context_string) do
19
+ hash.each { |var, value| let(var) { value } }
20
+
21
+ instance_eval(&block)
22
+ end
23
+ end
24
+ end
25
+
26
+
1
27
  # This file was generated by the `rails generate rspec:install` command. Conventionally, all
2
28
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
29
  # The generated `.rspec` file contains `--require spec_helper` which will cause
@@ -40,6 +66,8 @@ RSpec.configure do |config|
40
66
  mocks.verify_partial_doubles = true
41
67
  end
42
68
 
69
+ config.extend LetContextHelpers
70
+
43
71
  # The settings below are suggested to provide a good initial experience
44
72
  # with RSpec, but feel free to customize to your heart's content.
45
73
  =begin
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graph_starter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.5
4
+ version: 0.15.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Underwood
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.0.3
97
+ - !ruby/object:Gem::Dependency
98
+ name: babosa
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 1.0.2
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 1.0.2
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rspec-rails
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -223,6 +237,7 @@ files:
223
237
  - lib/graph_starter/version.rb
224
238
  - lib/tasks/graph_starter_tasks.rake
225
239
  - spec/asset_authorization_spec.rb
240
+ - spec/asset_slug_spec.rb
226
241
  - spec/dummy/README.rdoc
227
242
  - spec/dummy/Rakefile
228
243
  - spec/dummy/app/assets/javascripts/application.js
@@ -289,6 +304,7 @@ specification_version: 4
289
304
  summary: A Rails engine to get a UI for a Neo4j up and running quickly
290
305
  test_files:
291
306
  - spec/asset_authorization_spec.rb
307
+ - spec/asset_slug_spec.rb
292
308
  - spec/dummy/app/assets/javascripts/application.js
293
309
  - spec/dummy/app/assets/stylesheets/application.css
294
310
  - spec/dummy/app/controllers/application_controller.rb