middleman-dato 0.5.12 → 0.5.13

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: 847b712bcdae73ce71dfc2202f07c21a77ee0357
4
- data.tar.gz: 5a2ccd82a4132674cee8ef7beee080d4deb4f445
3
+ metadata.gz: e514bf545d59aaa6843c2ee8d0259a36e8897b40
4
+ data.tar.gz: 78f3d9cdc1f73b51ab35b82f8e5c0930c1dd02a5
5
5
  SHA512:
6
- metadata.gz: 23dec01ce0b72dc2223cddca7d2a21108c2775dd977b847d323afc53849d397814c0c6bbe6e42a48e9fa014cdbd87372cafffdf9815eea95a5466aa8b212e2c5
7
- data.tar.gz: 9a1d93e32b80245ac29d292b79baa33703f42445181b185fbf359a2ef0fa22429244887023f3896730b5195c558243f08e42a7841c74af4a8dfa878d39a8ed77
6
+ metadata.gz: 2548e31a5d023fcf633b3b037fe330c1e3cc6de150920a94e17b0e532b79f28d038e66e724073ba152150981b7b04cf31776ec951dd3681a9ca48b6c33847f2a
7
+ data.tar.gz: c7888a2cadf22659e248f4031a04a00aaee8cb45be7ed9d080c2618540f8cecf748703a15e0029fca4804148872c516b79c8a5315a2a9651d37f3b454d0c150b
data/README.md CHANGED
@@ -21,18 +21,18 @@ activate :dato,
21
21
 
22
22
  ### `dato`
23
23
 
24
- Using this helper you can access to any record stored in your space by content type.
25
- That is, if your space has a Content Type with `article` as API identifier, you can get
26
- the complete array of records with `dato.articles` (yep, the identifier pluralized).
24
+ Using this helper you can access to any item stored in your site by item type.
25
+ That is, if your site has an Item Type with `article` as API identifier, you can get
26
+ the complete array of items with `dato.articles` (yep, the identifier pluralized).
27
27
 
28
- If a Content Type is marked as Singleton (ie. `about_page`) you don't need to pluralize and
29
- a call to `dato.about_page` directly returns the Record (or `nil`, if still hasn't been created
28
+ If a Item Type is marked as Singleton (ie. `about_page`) you don't need to pluralize and
29
+ a call to `dato.about_page` directly returns the Item (or `nil`, if still hasn't been created
30
30
  within the backend).
31
31
 
32
- You can query any Record field value with a method called like the field API identifier.
32
+ You can query any Item field value with a method called like the field API identifier.
33
33
 
34
- If a Content Type has a String field with Title appeareance, than the record responds to `.slug`,
35
- returning a slugified version of the title itself (or the record identifier, if the title is empty).
34
+ If a Item Type has a String field with Title appeareance, than the item responds to `.slug`,
35
+ returning a slugified version of the title itself (or the item identifier, if the title is empty).
36
36
 
37
37
  You can use this helper within Middleman `config.rb`, as well as within your views:
38
38
 
@@ -61,7 +61,7 @@ Please [refer to the code](https://github.com/datocms/middleman-dato/tree/master
61
61
 
62
62
  ### `dato_meta_tags`
63
63
 
64
- This helper takes any record with a SEO field and generates SEO, Facebook OpenGraph and Twitter card meta tags based on it:
64
+ This helper takes any item with a SEO field and generates SEO, Facebook OpenGraph and Twitter card meta tags based on it:
65
65
 
66
66
  ```ruby
67
67
  <%= dato_meta_tags(dato.homepage) %>
@@ -91,7 +91,7 @@ This helper takes any record with a SEO field and generates SEO, Facebook OpenGr
91
91
 
92
92
  ### `dato_favicon_meta_tags`
93
93
 
94
- This helper generates meta tags based on the Favicon image specified within the Space:
94
+ This helper generates meta tags based on the Favicon image specified within the Site:
95
95
 
96
96
  ```ruby
97
97
  <%= dato_favicon_meta_tags(theme_color: '#D97C5F') %>
@@ -11,16 +11,16 @@ module MiddlemanDato
11
11
  @token = token
12
12
  end
13
13
 
14
- def space
14
+ def site
15
15
  include = [
16
- 'content_types',
17
- 'content_types.fields'
16
+ 'item_types',
17
+ 'item_types.fields'
18
18
  ]
19
- get('space', include: include).body.with_indifferent_access
19
+ get('site', include: include).body.with_indifferent_access
20
20
  end
21
21
 
22
- def records
23
- get('records', 'page[limit]' => 10_000).body.with_indifferent_access
22
+ def items
23
+ get('items', 'page[limit]' => 10_000).body.with_indifferent_access
24
24
  end
25
25
 
26
26
  def get(*args)
@@ -37,13 +37,13 @@ module MiddlemanDato
37
37
  headers: {
38
38
  'Content-Type' => 'application/json',
39
39
  'Accept' => 'application/json',
40
- 'X-Space-Domain' => @domain,
40
+ 'X-Site-Domain' => @domain,
41
41
  'Authorization' => "Api-Key #{@token}"
42
42
  }
43
43
  }
44
44
  @connection ||= Faraday.new(options) do |c|
45
45
  c.request :json
46
- c.response :json, content_type: /\bjson$/
46
+ c.response :json, item_type: /\bjson$/
47
47
  c.response :raise_error
48
48
  c.adapter :net_http
49
49
  end
@@ -7,24 +7,24 @@ Dir[File.dirname(__FILE__) + '/field_type/*.rb'].each do |file|
7
7
  end
8
8
 
9
9
  module MiddlemanDato
10
- class Record
10
+ class Item
11
11
  extend Forwardable
12
12
 
13
13
  attr_reader :entity
14
- def_delegators :entity, :id, :type, :content_type
14
+ def_delegators :entity, :id, :type, :item_type
15
15
 
16
- def initialize(entity, records_repo)
16
+ def initialize(entity, items_repo)
17
17
  @entity = entity
18
- @records_repo = records_repo
18
+ @items_repo = items_repo
19
19
  end
20
20
 
21
- def ==(record)
22
- record.is_a?(Record) && record.id == id
21
+ def ==(item)
22
+ item.is_a?(Item) && item.id == id
23
23
  end
24
24
 
25
25
  def slug
26
26
  if singleton?
27
- content_type.api_key.humanize.parameterize
27
+ item_type.api_key.humanize.parameterize
28
28
  elsif title_attribute
29
29
  title = send(title_attribute)
30
30
  if title
@@ -38,15 +38,16 @@ module MiddlemanDato
38
38
  end
39
39
 
40
40
  def singleton?
41
- content_type.singleton
41
+ item_type.singleton
42
42
  end
43
43
 
44
- def content_type
45
- @content_type ||= entity.content_type
44
+ def item_type
45
+ @item_type ||= entity.item_type
46
46
  end
47
+ alias_method :content_type, :item_type
47
48
 
48
49
  def fields
49
- @fields ||= content_type.fields.sort_by(&:position)
50
+ @fields ||= item_type.fields.sort_by(&:position)
50
51
  end
51
52
 
52
53
  def attributes
@@ -66,8 +67,8 @@ module MiddlemanDato
66
67
  end
67
68
 
68
69
  def to_s
69
- api_key = content_type.api_key
70
- "#<Record id=#{id} content_type=#{api_key} attributes=#{attributes}>"
70
+ api_key = item_type.api_key
71
+ "#<Item id=#{id} item_type=#{api_key} attributes=#{attributes}>"
71
72
  end
72
73
  alias inspect to_s
73
74
 
@@ -102,7 +103,7 @@ module MiddlemanDato
102
103
  entity.send(method)
103
104
  end
104
105
 
105
- value && type_klass.parse(value, @records_repo)
106
+ value && type_klass.parse(value, @items_repo)
106
107
  else
107
108
  raise "Cannot convert field `#{method}` of type `#{field_type}`"
108
109
  end
@@ -1,20 +1,20 @@
1
1
  require 'active_support/core_ext/string'
2
- require 'middleman_dato/record'
2
+ require 'middleman_dato/item'
3
3
 
4
4
  module MiddlemanDato
5
- class RecordsRepo
5
+ class ItemsRepo
6
6
  attr_reader :entities_repo, :collections_by_type
7
7
 
8
8
  def initialize(entities_repo)
9
9
  @entities_repo = entities_repo
10
10
  @collections_by_type = {}
11
- @records_by_id = {}
11
+ @items_by_id = {}
12
12
 
13
13
  build_cache!
14
14
  end
15
15
 
16
16
  def find(id)
17
- @records_by_id[id]
17
+ @items_by_id[id]
18
18
  end
19
19
 
20
20
  def respond_to?(method, include_private = false)
@@ -27,9 +27,9 @@ module MiddlemanDato
27
27
 
28
28
  private
29
29
 
30
- def content_type_key(content_type)
31
- api_key = content_type.api_key
32
- if content_type.singleton
30
+ def item_type_key(item_type)
31
+ api_key = item_type.api_key
32
+ if item_type.singleton
33
33
  [api_key.to_sym, true]
34
34
  else
35
35
  [api_key.pluralize.to_sym, false]
@@ -37,35 +37,35 @@ module MiddlemanDato
37
37
  end
38
38
 
39
39
  def build_cache!
40
- content_type_entities.each do |content_type|
41
- key, singleton = content_type_key(content_type)
40
+ item_type_entities.each do |item_type|
41
+ key, singleton = item_type_key(item_type)
42
42
  @collections_by_type[key] = if singleton
43
43
  nil
44
44
  else
45
- RecordCollection.new
45
+ ItemCollection.new
46
46
  end
47
47
  end
48
48
 
49
- record_entities.each do |record_entity|
50
- record = Record.new(record_entity, self)
49
+ item_entities.each do |item_entity|
50
+ item = Item.new(item_entity, self)
51
51
 
52
- key, singleton = content_type_key(record_entity.content_type)
52
+ key, singleton = item_type_key(item_entity.item_type)
53
53
  if singleton
54
- @collections_by_type[key] = record
54
+ @collections_by_type[key] = item
55
55
  else
56
- @collections_by_type[key].push record
56
+ @collections_by_type[key].push item
57
57
  end
58
58
 
59
- @records_by_id[record.id] = record
59
+ @items_by_id[item.id] = item
60
60
  end
61
61
  end
62
62
 
63
- def content_type_entities
64
- entities_repo.find_entities_of_type('content_type')
63
+ def item_type_entities
64
+ entities_repo.find_entities_of_type('item_type')
65
65
  end
66
66
 
67
- def record_entities
68
- entities_repo.find_entities_of_type('record')
67
+ def item_entities
68
+ entities_repo.find_entities_of_type('item')
69
69
  end
70
70
 
71
71
  def method_missing(method, *arguments, &block)
@@ -76,11 +76,11 @@ module MiddlemanDato
76
76
  end
77
77
  end
78
78
 
79
- class RecordCollection < Array
79
+ class ItemCollection < Array
80
80
  def each(&block)
81
81
  if block && block.arity == 2
82
- each_with_object({}) do |record, acc|
83
- acc[record.id] = record
82
+ each_with_object({}) do |item, acc|
83
+ acc[item.id] = item
84
84
  end.each(&block)
85
85
  else
86
86
  super(&block)
@@ -89,7 +89,7 @@ module MiddlemanDato
89
89
 
90
90
  def [](id)
91
91
  if id.is_a? String
92
- find { |record| record.id == id }
92
+ find { |item| item.id == id }
93
93
  else
94
94
  super(id)
95
95
  end
@@ -5,7 +5,7 @@ module MiddlemanDato
5
5
  module MetaTags
6
6
  class ArticleModifiedTime < OgMetaTag
7
7
  def buildable?
8
- record && !record.singleton?
8
+ item && !item.singleton?
9
9
  end
10
10
 
11
11
  def name
@@ -13,7 +13,7 @@ module MiddlemanDato
13
13
  end
14
14
 
15
15
  def value
16
- record.updated_at.iso8601
16
+ item.updated_at.iso8601
17
17
  end
18
18
  end
19
19
  end
@@ -5,7 +5,7 @@ module MiddlemanDato
5
5
  module MetaTags
6
6
  class ArticlePublisher < OgMetaTag
7
7
  def buildable?
8
- record && !record.singleton? &&
8
+ item && !item.singleton? &&
9
9
  global_seo_field(:facebook_page_url).present?
10
10
  end
11
11
 
@@ -4,17 +4,17 @@ require 'middleman_dato/field_type/seo'
4
4
  module MiddlemanDato
5
5
  module MetaTags
6
6
  class Base
7
- attr_reader :builder, :base_url, :space, :content_type, :record
7
+ attr_reader :builder, :base_url, :site, :item_type, :item
8
8
 
9
- def initialize(builder, base_url, space, record)
10
- @space = space
9
+ def initialize(builder, base_url, site, item)
10
+ @site = site
11
11
  @base_url = base_url
12
- @record = record
12
+ @item = item
13
13
  @builder = builder
14
14
  end
15
15
 
16
16
  def seo_field_with_fallback(attribute, alternative = nil, &block)
17
- seo = first_record_field_of_type(:seo)
17
+ seo = first_item_field_of_type(:seo)
18
18
 
19
19
  alternatives = []
20
20
 
@@ -33,21 +33,21 @@ module MiddlemanDato
33
33
  end
34
34
 
35
35
  def no_index?
36
- space && space.no_index
36
+ site && site.no_index
37
37
  end
38
38
 
39
39
  def global_seo_field(attribute)
40
40
  global_seo[attribute] if global_seo
41
41
  end
42
42
 
43
- def first_record_field_of_type(type)
44
- return nil unless record
43
+ def first_item_field_of_type(type)
44
+ return nil unless item
45
45
 
46
- field = record.fields.detect do |f|
46
+ field = item.fields.detect do |f|
47
47
  f.field_type == type.to_s
48
48
  end
49
49
 
50
- record.send(field.api_key) if field
50
+ item.send(field.api_key) if field
51
51
  end
52
52
 
53
53
  def fallback_seo
@@ -58,9 +58,9 @@ module MiddlemanDato
58
58
 
59
59
  def global_seo
60
60
  @global_seo ||= begin
61
- if space && space.global_seo
62
- global_seo = space.global_seo
63
- if space.locales.size > 1
61
+ if site && site.global_seo
62
+ global_seo = site.global_seo
63
+ if site.locales.size > 1
64
64
  global_seo[I18n.locale]
65
65
  else
66
66
  global_seo
@@ -15,7 +15,7 @@ module MiddlemanDato
15
15
  def image
16
16
  image = seo_field_with_fallback(
17
17
  :image,
18
- first_record_field_of_type(:image)
18
+ first_item_field_of_type(:image)
19
19
  ) do |i|
20
20
  i.width >= 200 && i.height >= 200
21
21
  end
@@ -12,9 +12,9 @@ module MiddlemanDato
12
12
  end
13
13
 
14
14
  def value
15
- if !record
15
+ if !item
16
16
  'website'
17
- elsif record.singleton?
17
+ elsif item.singleton?
18
18
  'website'
19
19
  else
20
20
  'article'
@@ -16,8 +16,8 @@ module MiddlemanDato
16
16
  def title
17
17
  @title ||= seo_field_with_fallback(
18
18
  :title,
19
- record && record.title_attribute &&
20
- record.send(record.title_attribute)
19
+ item && item.title_attribute &&
20
+ item.send(item.title_attribute)
21
21
  )
22
22
  end
23
23
 
@@ -2,16 +2,16 @@ require 'middleman-core'
2
2
  require 'middleman-core/version'
3
3
  require 'semantic'
4
4
  require 'middleman_dato/meta_tags_builder'
5
- require 'middleman_dato/space'
5
+ require 'middleman_dato/site'
6
6
  require 'middleman_dato/meta_tags/favicon'
7
7
 
8
8
  module MiddlemanDato
9
9
  class MiddlemanExtension < ::Middleman::Extension
10
- attr_reader :space
10
+ attr_reader :site
11
11
 
12
- option :domain, nil, 'Space domain'
13
- option :token, nil, 'Space API token'
14
- option :api_host, 'http://api.datocms.com', 'Space API token'
12
+ option :domain, nil, 'Site domain'
13
+ option :token, nil, 'Site API token'
14
+ option :api_host, 'http://site-api.datocms.com', 'Site API host'
15
15
  option :base_url, nil, 'Website base URL'
16
16
 
17
17
  if Semantic::Version.new(Middleman::VERSION).major >= 4
@@ -21,11 +21,11 @@ module MiddlemanDato
21
21
  def initialize(app, options_hash = {}, &block)
22
22
  super
23
23
 
24
- @space = space = MiddlemanDato::Space.new(options)
25
- @space.refresh!
24
+ @site = site = MiddlemanDato::Site.new(options)
25
+ @site.refresh!
26
26
 
27
27
  app.before do
28
- space.refresh! if !build? && !ENV.fetch('DISABLE_DATO_REFRESH', false)
28
+ site.refresh! if !build? && !ENV.fetch('DISABLE_DATO_REFRESH', false)
29
29
  true
30
30
  end
31
31
 
@@ -35,26 +35,26 @@ module MiddlemanDato
35
35
  end
36
36
 
37
37
  def dato
38
- space.records_repo
38
+ site.items_repo
39
39
  end
40
40
 
41
41
  module InstanceMethods
42
42
  def dato
43
- extensions[:dato].space.records_repo
43
+ extensions[:dato].site.items_repo
44
44
  end
45
45
  end
46
46
 
47
47
  helpers do
48
48
  def dato
49
- extensions[:dato].space.records_repo
49
+ extensions[:dato].site.items_repo
50
50
  end
51
51
 
52
- def dato_meta_tags(record)
52
+ def dato_meta_tags(item)
53
53
  builder = MetaTagsBuilder.new(
54
54
  self,
55
55
  extensions[:dato].options[:base_url],
56
- extensions[:dato].space.entity,
57
- record
56
+ extensions[:dato].site.entity,
57
+ item
58
58
  )
59
59
  builder.meta_tags
60
60
  end
@@ -64,7 +64,7 @@ module MiddlemanDato
64
64
  options[:app_name] ||= ''
65
65
  favicon_builder = MetaTags::Favicon.new(
66
66
  self,
67
- extensions[:dato].space.entity,
67
+ extensions[:dato].site.entity,
68
68
  options[:theme_color]
69
69
  )
70
70
  favicon_builder.build
@@ -1,27 +1,27 @@
1
1
  # coding: utf-8
2
2
  require 'middleman_dato/client'
3
3
  require 'middleman_dato/entities_repo'
4
- require 'middleman_dato/records_repo'
4
+ require 'middleman_dato/items_repo'
5
5
 
6
6
  module MiddlemanDato
7
- class Space
7
+ class Site
8
8
  attr_reader :options
9
9
  attr_reader :entities_repo
10
- attr_reader :records_repo
10
+ attr_reader :items_repo
11
11
 
12
12
  def initialize(options)
13
13
  @options = options
14
14
  @entities_repo = EntitiesRepo.new
15
- @records_repo = RecordsRepo.new(@entities_repo)
15
+ @items_repo = ItemsRepo.new(@entities_repo)
16
16
  end
17
17
 
18
18
  def refresh!
19
- @entities_repo = EntitiesRepo.new(client.space, client.records)
20
- @records_repo = RecordsRepo.new(@entities_repo)
19
+ @entities_repo = EntitiesRepo.new(client.site, client.items)
20
+ @items_repo = ItemsRepo.new(@entities_repo)
21
21
  end
22
22
 
23
23
  def entity
24
- @entities_repo.find_entities_of_type('space').first
24
+ @entities_repo.find_entities_of_type('site').first
25
25
  end
26
26
 
27
27
  private
@@ -1,4 +1,4 @@
1
1
  module MiddlemanDato
2
- VERSION = '0.5.12'
2
+ VERSION = '0.5.13'
3
3
  end
4
4
 
@@ -9,8 +9,8 @@ Gem::Specification.new do |s|
9
9
  s.authors = ['Stefano Verna']
10
10
  s.email = ['s.verna@cantierecreativo.net']
11
11
  s.homepage = 'http://cantierecreativo.net'
12
- s.summary = 'Fetches data from a Dato space'
13
- s.description = 'Fetches data from a Dato space'
12
+ s.summary = 'Fetches data from a Dato site'
13
+ s.description = 'Fetches data from a Dato site'
14
14
 
15
15
  s.files = `git ls-files`.split("\n")
16
16
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -8,32 +8,32 @@ module MiddlemanDato
8
8
  context 'a payload with a data key' do
9
9
  context 'object' do
10
10
  let(:payload) do
11
- { data: { id: 'bar', type: 'record' } }
11
+ { data: { id: 'bar', type: 'item' } }
12
12
  end
13
13
 
14
14
  it 'inserts the object into entities' do
15
- expect(source.entities['record']['bar']).to be_a JsonApiEntity
15
+ expect(source.entities['item']['bar']).to be_a JsonApiEntity
16
16
  end
17
17
  end
18
18
 
19
19
  context 'array' do
20
20
  let(:payload) do
21
- { data: [{ id: 'bar', type: 'record' }] }
21
+ { data: [{ id: 'bar', type: 'item' }] }
22
22
  end
23
23
 
24
24
  it 'inserts the objects into entities' do
25
- expect(source.entities['record']['bar']).to be_a JsonApiEntity
25
+ expect(source.entities['item']['bar']).to be_a JsonApiEntity
26
26
  end
27
27
  end
28
28
  end
29
29
 
30
30
  context 'a payload with an included key' do
31
31
  let(:payload) do
32
- { included: [{ id: 'bar', type: 'record' }] }
32
+ { included: [{ id: 'bar', type: 'item' }] }
33
33
  end
34
34
 
35
35
  it 'inserts the objects into entities' do
36
- expect(source.entities['record']['bar']).to be_a JsonApiEntity
36
+ expect(source.entities['item']['bar']).to be_a JsonApiEntity
37
37
  end
38
38
  end
39
39
  end
@@ -1,11 +1,11 @@
1
1
  module MiddlemanDato
2
- RSpec.describe Record do
3
- subject(:record) { described_class.new(entity, repo) }
2
+ RSpec.describe Item do
3
+ subject(:item) { described_class.new(entity, repo) }
4
4
  let(:entity) do
5
5
  double(
6
- 'MiddlemanDato::JsonApiEntity(Record)',
6
+ 'MiddlemanDato::JsonApiEntity(Item)',
7
7
  id: '14',
8
- content_type: content_type,
8
+ item_type: item_type,
9
9
  title: "My titlè with àccents",
10
10
  body: 'Hi there',
11
11
  position: 2,
@@ -13,9 +13,9 @@ module MiddlemanDato
13
13
  )
14
14
  end
15
15
  let(:repo) do
16
- instance_double('MiddlemanDato::RecordsRepo')
16
+ instance_double('MiddlemanDato::ItemsRepo')
17
17
  end
18
- let(:content_type) do
18
+ let(:item_type) do
19
19
  double(
20
20
  'MiddlemanDato::JsonApiEntity(Content Type)',
21
21
  singleton: is_singleton,
@@ -50,7 +50,7 @@ module MiddlemanDato
50
50
  let(:is_singleton) { true }
51
51
 
52
52
  it 'returns the parameterized content type api key' do
53
- expect(record.slug).to eq 'work-item'
53
+ expect(item.slug).to eq 'work-item'
54
54
  end
55
55
  end
56
56
 
@@ -58,13 +58,13 @@ module MiddlemanDato
58
58
  let(:fields) { [] }
59
59
 
60
60
  it 'returns the ID' do
61
- expect(record.slug).to eq '14'
61
+ expect(item.slug).to eq '14'
62
62
  end
63
63
  end
64
64
 
65
65
  context 'non singleton, title field' do
66
66
  it 'returns the ID + title' do
67
- expect(record.slug).to eq '14-my-title-with-accents'
67
+ expect(item.slug).to eq '14-my-title-with-accents'
68
68
  end
69
69
  end
70
70
  end
@@ -75,35 +75,35 @@ module MiddlemanDato
75
75
  'title' => "My titlè with àccents",
76
76
  'body' => 'Hi there'
77
77
  }
78
- expect(record.attributes).to eq expected_attributes
78
+ expect(item.attributes).to eq expected_attributes
79
79
  end
80
80
  end
81
81
 
82
82
  describe 'position' do
83
83
  it 'returns the entity position field' do
84
- expect(record.position).to eq 2
84
+ expect(item.position).to eq 2
85
85
  end
86
86
  end
87
87
 
88
88
  describe 'updated_at' do
89
89
  it 'returns the entity updated_at field' do
90
- expect(record.updated_at).to be_a Time
90
+ expect(item.updated_at).to be_a Time
91
91
  end
92
92
  end
93
93
 
94
94
  describe 'dynamic methods' do
95
95
  context 'existing field' do
96
96
  it 'returns the field value' do
97
- expect(record.respond_to?(:body)).to be_truthy
98
- expect(record.body).to eq 'Hi there'
97
+ expect(item.respond_to?(:body)).to be_truthy
98
+ expect(item.body).to eq 'Hi there'
99
99
  end
100
100
 
101
101
  context 'localized field' do
102
102
  let(:entity) do
103
103
  double(
104
- 'MiddlemanDato::JsonApiEntity(Record)',
104
+ 'MiddlemanDato::JsonApiEntity(Item)',
105
105
  id: '14',
106
- content_type: content_type,
106
+ item_type: item_type,
107
107
  title: { it: 'Foo', en: 'Bar' }
108
108
  )
109
109
  end
@@ -123,14 +123,14 @@ module MiddlemanDato
123
123
 
124
124
  it 'returns the value for the current locale' do
125
125
  I18n.with_locale(:it) do
126
- expect(record.title).to eq 'Foo'
126
+ expect(item.title).to eq 'Foo'
127
127
  end
128
128
  end
129
129
 
130
130
  context 'non existing value' do
131
131
  it 'raises nil' do
132
132
  I18n.with_locale(:ru) do
133
- expect(record.title).to eq nil
133
+ expect(item.title).to eq nil
134
134
  end
135
135
  end
136
136
  end
@@ -139,8 +139,8 @@ module MiddlemanDato
139
139
 
140
140
  context 'non existing field' do
141
141
  it 'raises NoMethodError' do
142
- expect(record.respond_to?(:qux)).to be_falsy
143
- expect { record.qux }.to raise_error NoMethodError
142
+ expect(item.respond_to?(:qux)).to be_falsy
143
+ expect { item.qux }.to raise_error NoMethodError
144
144
  end
145
145
  end
146
146
 
@@ -158,30 +158,30 @@ module MiddlemanDato
158
158
  end
159
159
 
160
160
  it 'raises RuntimeError' do
161
- expect { record.title }.to raise_error RuntimeError
161
+ expect { item.title }.to raise_error RuntimeError
162
162
  end
163
163
  end
164
164
  end
165
165
 
166
166
  context 'equality' do
167
- subject(:same_record) { described_class.new(entity, repo) }
167
+ subject(:same_item) { described_class.new(entity, repo) }
168
168
 
169
- subject(:another_record) { described_class.new(another_entity, repo) }
169
+ subject(:another_item) { described_class.new(another_entity, repo) }
170
170
  let(:another_entity) do
171
171
  double(
172
- 'MiddlemanDato::JsonApiEntity(Record)',
172
+ 'MiddlemanDato::JsonApiEntity(Item)',
173
173
  id: '15'
174
174
  )
175
175
  end
176
176
 
177
177
 
178
- it 'two records are equal if their id is the same' do
179
- expect(record).to eq same_record
178
+ it 'two items are equal if their id is the same' do
179
+ expect(item).to eq same_item
180
180
  end
181
181
 
182
182
  it 'else they\'re not' do
183
- expect(record).not_to eq another_record
184
- expect(record).not_to eq "foobar"
183
+ expect(item).not_to eq another_item
184
+ expect(item).not_to eq "foobar"
185
185
  end
186
186
  end
187
187
  end
@@ -1,67 +1,67 @@
1
- require 'middleman_dato/records_repo'
1
+ require 'middleman_dato/items_repo'
2
2
 
3
3
  module MiddlemanDato
4
- RSpec.describe RecordsRepo do
4
+ RSpec.describe ItemsRepo do
5
5
  subject(:repo) { described_class.new(entities_repo) }
6
6
  let(:entities_repo) do
7
7
  instance_double('MiddlemanDato::EntitiesRepo')
8
8
  end
9
- let(:content_type) do
9
+ let(:item_type) do
10
10
  double('MiddlemanDato::JsonApiEntity', api_key: 'post', singleton: false)
11
11
  end
12
- let(:singleton_content_type) do
12
+ let(:singleton_item_type) do
13
13
  double('MiddlemanDato::JsonApiEntity', api_key: 'homepage', singleton: true)
14
14
  end
15
- let(:record_entity) do
16
- double('MiddlemanDato::JsonApiEntity', content_type: content_type)
15
+ let(:item_entity) do
16
+ double('MiddlemanDato::JsonApiEntity', item_type: item_type)
17
17
  end
18
- let(:singleton_record_entity) do
19
- double('MiddlemanDato::JsonApiEntity', content_type: singleton_content_type)
18
+ let(:singleton_item_entity) do
19
+ double('MiddlemanDato::JsonApiEntity', item_type: singleton_item_type)
20
20
  end
21
- let(:record) do
22
- instance_double('MiddlemanDato::Record', id: '14')
21
+ let(:item) do
22
+ instance_double('MiddlemanDato::Item', id: '14')
23
23
  end
24
- let(:singleton_record) do
25
- instance_double('MiddlemanDato::Record', id: '22')
24
+ let(:singleton_item) do
25
+ instance_double('MiddlemanDato::Item', id: '22')
26
26
  end
27
27
 
28
28
  before do
29
- allow(entities_repo).to receive(:find_entities_of_type).with('content_type') do
30
- [content_type, singleton_content_type]
29
+ allow(entities_repo).to receive(:find_entities_of_type).with('item_type') do
30
+ [item_type, singleton_item_type]
31
31
  end
32
32
 
33
- allow(entities_repo).to receive(:find_entities_of_type).with('record') do
34
- [record_entity, singleton_record_entity]
33
+ allow(entities_repo).to receive(:find_entities_of_type).with('item') do
34
+ [item_entity, singleton_item_entity]
35
35
  end
36
36
 
37
- allow(Record).to receive(:new).with(record_entity, anything) do
38
- record
37
+ allow(Item).to receive(:new).with(item_entity, anything) do
38
+ item
39
39
  end
40
40
 
41
- allow(Record).to receive(:new).with(singleton_record_entity, anything) do
42
- singleton_record
41
+ allow(Item).to receive(:new).with(singleton_item_entity, anything) do
42
+ singleton_item
43
43
  end
44
44
  end
45
45
 
46
46
  describe '#find' do
47
- it 'returns the specified record' do
48
- expect(repo.find('14')).to eq record
49
- expect(repo.find('22')).to eq singleton_record
47
+ it 'returns the specified item' do
48
+ expect(repo.find('14')).to eq item
49
+ expect(repo.find('22')).to eq singleton_item
50
50
  end
51
51
  end
52
52
 
53
- describe 'content_types' do
53
+ describe 'item_types' do
54
54
  describe 'singleton' do
55
- it 'returns the associated record' do
55
+ it 'returns the associated item' do
56
56
  expect(repo.respond_to?(:homepage)).to be_truthy
57
- expect(repo.homepage).to eq singleton_record
57
+ expect(repo.homepage).to eq singleton_item
58
58
  end
59
59
  end
60
60
 
61
61
  describe 'non-singleton' do
62
- it 'returns the associated records' do
62
+ it 'returns the associated items' do
63
63
  expect(repo.respond_to?(:posts)).to be_truthy
64
- expect(repo.posts).to eq [record]
64
+ expect(repo.posts).to eq [item]
65
65
  end
66
66
  end
67
67
 
@@ -73,16 +73,16 @@ module MiddlemanDato
73
73
  end
74
74
  end
75
75
 
76
- describe RecordsRepo::RecordCollection do
76
+ describe ItemsRepo::ItemCollection do
77
77
  subject(:collection) { described_class.new(items) }
78
78
  let(:items) do
79
79
  [foo]
80
80
  end
81
81
 
82
- let(:foo) { double('MiddlemanDato::Record', id: '1', name: 'Foo') }
82
+ let(:foo) { double('MiddlemanDato::Item', id: '1', name: 'Foo') }
83
83
 
84
84
  describe '#[]' do
85
- it 'returns the record with the specified id or index' do
85
+ it 'returns the item with the specified id or index' do
86
86
  expect(collection['1']).to eq foo
87
87
  expect(collection[0]).to eq foo
88
88
  end
@@ -96,7 +96,7 @@ module MiddlemanDato
96
96
 
97
97
  describe '#each' do
98
98
  context 'with arity == 2' do
99
- it 'iterates with id and record' do
99
+ it 'iterates with id and item' do
100
100
  collection.each do |a, b|
101
101
  expect(a).to eq '1'
102
102
  expect(b).to eq foo
@@ -3,16 +3,16 @@ require 'spec_helper'
3
3
  module MiddlemanDato
4
4
  module MetaTags
5
5
  RSpec.describe ArticleModifiedTime do
6
- subject(:meta_tag) { described_class.new(builder, base_url, space, record) }
6
+ subject(:meta_tag) { described_class.new(builder, base_url, site, item) }
7
7
  let(:builder) { ::MockBuilder.new }
8
8
  let(:base_url) { nil }
9
- let(:space) { nil }
10
- let(:record) do
11
- double('Record', updated_at: Time.now, singleton?: false)
9
+ let(:site) { nil }
10
+ let(:item) do
11
+ double('Item', updated_at: Time.now, singleton?: false)
12
12
  end
13
13
 
14
14
  describe '.value' do
15
- context 'if record is not singleton' do
15
+ context 'if item is not singleton' do
16
16
  it 'returns an ISO 8601 time representation' do
17
17
  expect(meta_tag.value).not_to be_nil
18
18
  end
@@ -3,13 +3,13 @@ require 'spec_helper'
3
3
  module MiddlemanDato
4
4
  module MetaTags
5
5
  RSpec.describe Image do
6
- subject(:meta_tag) { described_class.new(builder, base_url, space, record) }
6
+ subject(:meta_tag) { described_class.new(builder, base_url, site, item) }
7
7
  let(:builder) { ::MockBuilder.new }
8
8
  let(:base_url) { nil }
9
- let(:space) { nil }
10
- let(:record) do
9
+ let(:site) { nil }
10
+ let(:item) do
11
11
  double(
12
- 'MiddlemanDato::Record',
12
+ 'MiddlemanDato::Item',
13
13
  fields: [double('MiddlemanDato::JsonApiEntity', api_key: 'foo', field_type: 'image')],
14
14
  foo: image,
15
15
  singleton?: false
@@ -3,11 +3,11 @@ require 'spec_helper'
3
3
  module MiddlemanDato
4
4
  module MetaTags
5
5
  RSpec.describe OgLocale do
6
- subject(:meta_tag) { described_class.new(builder, base_url, space, record) }
6
+ subject(:meta_tag) { described_class.new(builder, base_url, site, item) }
7
7
  let(:builder) { ::MockBuilder.new }
8
8
  let(:base_url) { nil }
9
- let(:space) { nil }
10
- let(:record) { nil }
9
+ let(:site) { nil }
10
+ let(:item) { nil }
11
11
 
12
12
  describe '#value' do
13
13
  it 'returns the current locale' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-dato
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.12
4
+ version: 0.5.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Verna
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-23 00:00:00.000000000 Z
11
+ date: 2016-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: middleman-core
@@ -94,7 +94,7 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- description: Fetches data from a Dato space
97
+ description: Fetches data from a Dato site
98
98
  email:
99
99
  - s.verna@cantierecreativo.net
100
100
  executables: []
@@ -125,6 +125,8 @@ files:
125
125
  - lib/middleman_dato/field_type/string.rb
126
126
  - lib/middleman_dato/field_type/text.rb
127
127
  - lib/middleman_dato/field_type/video.rb
128
+ - lib/middleman_dato/item.rb
129
+ - lib/middleman_dato/items_repo.rb
128
130
  - lib/middleman_dato/json_api_entity.rb
129
131
  - lib/middleman_dato/meta_tags/article_modified_time.rb
130
132
  - lib/middleman_dato/meta_tags/article_publisher.rb
@@ -144,9 +146,7 @@ files:
144
146
  - lib/middleman_dato/meta_tags/url.rb
145
147
  - lib/middleman_dato/meta_tags_builder.rb
146
148
  - lib/middleman_dato/middleman_extension.rb
147
- - lib/middleman_dato/record.rb
148
- - lib/middleman_dato/records_repo.rb
149
- - lib/middleman_dato/space.rb
149
+ - lib/middleman_dato/site.rb
150
150
  - lib/middleman_dato/version.rb
151
151
  - middleman-dato.gemspec
152
152
  - spec/middleman_dato/entities_repo_spec.rb
@@ -155,13 +155,13 @@ files:
155
155
  - spec/middleman_dato/field_type/lat_lon_spec.rb
156
156
  - spec/middleman_dato/field_type/seo_spec.rb
157
157
  - spec/middleman_dato/field_type/video_spec.rb
158
+ - spec/middleman_dato/item_spec.rb
159
+ - spec/middleman_dato/items_repo_spec.rb
158
160
  - spec/middleman_dato/json_api_entity_spec.rb
159
161
  - spec/middleman_dato/meta_tags/article_modified_time_spec.rb
160
162
  - spec/middleman_dato/meta_tags/favicon_spec.rb
161
163
  - spec/middleman_dato/meta_tags/image_spec.rb
162
164
  - spec/middleman_dato/meta_tags/og_locale_spec.rb
163
- - spec/middleman_dato/record_spec.rb
164
- - spec/middleman_dato/records_repo_spec.rb
165
165
  - spec/spec_helper.rb
166
166
  - spec/support/mock_builder.rb
167
167
  homepage: http://cantierecreativo.net
@@ -186,7 +186,7 @@ rubyforge_project:
186
186
  rubygems_version: 2.5.1
187
187
  signing_key:
188
188
  specification_version: 4
189
- summary: Fetches data from a Dato space
189
+ summary: Fetches data from a Dato site
190
190
  test_files:
191
191
  - spec/middleman_dato/entities_repo_spec.rb
192
192
  - spec/middleman_dato/field_type/file_spec.rb
@@ -194,13 +194,13 @@ test_files:
194
194
  - spec/middleman_dato/field_type/lat_lon_spec.rb
195
195
  - spec/middleman_dato/field_type/seo_spec.rb
196
196
  - spec/middleman_dato/field_type/video_spec.rb
197
+ - spec/middleman_dato/item_spec.rb
198
+ - spec/middleman_dato/items_repo_spec.rb
197
199
  - spec/middleman_dato/json_api_entity_spec.rb
198
200
  - spec/middleman_dato/meta_tags/article_modified_time_spec.rb
199
201
  - spec/middleman_dato/meta_tags/favicon_spec.rb
200
202
  - spec/middleman_dato/meta_tags/image_spec.rb
201
203
  - spec/middleman_dato/meta_tags/og_locale_spec.rb
202
- - spec/middleman_dato/record_spec.rb
203
- - spec/middleman_dato/records_repo_spec.rb
204
204
  - spec/spec_helper.rb
205
205
  - spec/support/mock_builder.rb
206
206
  has_rdoc: