alchemy-json_api 0.2.0 → 0.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf27f9f29046c7ad0e2d417d3c9cca5e0d58d59c7bc729119d76f37adeaa4b28
4
- data.tar.gz: 697deefd22185ca5df6811f9687129e34c33e445feacae02f71fd045f5e96830
3
+ metadata.gz: 3046cd47b8e5d362917e2c8b595bc25c338e4bdf94a71dabb21794c1aabf913a
4
+ data.tar.gz: 0670ad88fa25050738ce80692e1004b8b0016b3c25df8596f76fe0b054ed4e51
5
5
  SHA512:
6
- metadata.gz: 9d6fc09988a259d084f4e34440985dbe85122c191342bf7b4b722b559f1e3d9500ffd7ab3e6e4c32748a946305ca5b96fc0ff13fcb9236d73626b57116e8bf70
7
- data.tar.gz: 139fc4a4b1e17957dd1cddad50a6f26601e773adb5b83b41a0fb2234cddc58d6f9aa24f24000f00607fa64cee0d3e7304105f396204c9c72fcd50c500e1d3460
6
+ metadata.gz: 9d48b6c6692e7330db7daeaedc03c177a89ec55225f0f3c96145fd42f7eccf972cc757a47120279f3cf34dffdb3b92aba9b8974a420743a7c0f2f35454fd5f68
7
+ data.tar.gz: 9071f12da6fe44f21971cb85d53890691f0702f73396ec2e5ef08e7d6439d601aaa6625815c1a6867f15c25cdd23f1c69af67d1111769368df2d2b902e602407
@@ -34,12 +34,11 @@ module Alchemy
34
34
  end
35
35
 
36
36
  def load_page_by_id
37
- page_scope.find_by(id: params[:id])
37
+ page_scope.find_by(id: params[:path])
38
38
  end
39
39
 
40
40
  def load_page_by_urlname
41
- # The route param is called :id although it might be a string
42
- page_scope.find_by(urlname: params[:id])
41
+ page_scope.find_by(urlname: params[:path])
43
42
  end
44
43
 
45
44
  def page_scope
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
- require "alchemy/json_api/link_helper"
4
3
 
5
4
  module Alchemy::JsonApi
6
5
  class EssenceFileSerializer
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
- require "alchemy/json_api/link_helper"
4
3
 
5
4
  module Alchemy::JsonApi
6
5
  class EssenceNodeSerializer
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ require "alchemy/json_api/essence_serializer"
3
+
4
+ module Alchemy::JsonApi
5
+ class EssencePageSerializer
6
+ include EssenceSerializer
7
+
8
+ attribute :ingredient do |essence|
9
+ essence.page&.url_path
10
+ end
11
+
12
+ attribute :page_name do |essence|
13
+ essence.page&.name
14
+ end
15
+
16
+ attribute :page_url do |essence|
17
+ essence.page&.url_path
18
+ end
19
+
20
+ has_one :page, record_type: :page, serializer: PageSerializer
21
+ end
22
+ end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
- require "alchemy/json_api/link_helper"
4
3
 
5
4
  module Alchemy::JsonApi
6
5
  class EssencePictureSerializer
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  Alchemy::JsonApi::Engine.routes.draw do
3
- resources :pages, only: [:show, :index]
4
- resources :layout_pages, only: [:show, :index]
3
+ resources :pages, only: [:index]
4
+ get "pages/*path" => "pages#show", as: :page
5
+ resources :layout_pages, only: [:index]
6
+ get "layout_pages/*path" => "layout_pages#show", as: :layout_page
5
7
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+ RSpec.shared_examples "an essence serializer" do
3
+ describe "attributes" do
4
+ subject { serializer.serializable_hash[:data][:attributes] }
5
+
6
+ it "has the right keys and values" do
7
+ expect(subject).to have_key(:ingredient)
8
+ end
9
+ end
10
+
11
+ describe "relationships" do
12
+ subject { serializer.serializable_hash[:data][:relationships] }
13
+
14
+ it "has the right keys and values" do
15
+ expect(subject[:element]).to eq(data: { id: essence.element.id.to_s, type: :element })
16
+ end
17
+ end
18
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  module Alchemy
3
3
  module JsonApi
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy-json_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Meyerhoff
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-15 00:00:00.000000000 Z
11
+ date: 2020-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: alchemy_cms
@@ -114,6 +114,7 @@ files:
114
114
  - app/serializers/alchemy/json_api/essence_html_serializer.rb
115
115
  - app/serializers/alchemy/json_api/essence_link_serializer.rb
116
116
  - app/serializers/alchemy/json_api/essence_node_serializer.rb
117
+ - app/serializers/alchemy/json_api/essence_page_serializer.rb
117
118
  - app/serializers/alchemy/json_api/essence_picture_serializer.rb
118
119
  - app/serializers/alchemy/json_api/essence_richtext_serializer.rb
119
120
  - app/serializers/alchemy/json_api/essence_select_serializer.rb
@@ -125,14 +126,14 @@ files:
125
126
  - lib/alchemy/json_api.rb
126
127
  - lib/alchemy/json_api/engine.rb
127
128
  - lib/alchemy/json_api/essence_serializer.rb
128
- - lib/alchemy/json_api/link_helper.rb
129
+ - lib/alchemy/json_api/test_support/essence_serializer_behaviour.rb
129
130
  - lib/alchemy/json_api/version.rb
130
131
  - lib/tasks/alchemy/json_api_tasks.rake
131
132
  homepage: https://github.com/AlchemyCMS/alchemy-json_api
132
133
  licenses:
133
134
  - MIT
134
135
  metadata: {}
135
- post_install_message:
136
+ post_install_message:
136
137
  rdoc_options: []
137
138
  require_paths:
138
139
  - lib
@@ -148,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
149
  version: '0'
149
150
  requirements: []
150
151
  rubygems_version: 3.0.3
151
- signing_key:
152
+ signing_key:
152
153
  specification_version: 4
153
154
  summary: A JSONAPI compliant API for AlchemyCMS
154
155
  test_files: []
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
- module Alchemy
3
- module JsonApi
4
- module LinkHelper
5
- def alchemy_link(path_base, object)
6
- return unless object
7
-
8
- if Rails.application.routes.default_url_options[:host]
9
- Alchemy::Engine.routes.url_helpers.public_send("#{path_base}_url", object)
10
- else
11
- Alchemy::Engine.routes.url_helpers.public_send("#{path_base}_path", object)
12
- end
13
- end
14
- end
15
- end
16
- end