prismic.io 1.0.9 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -48,7 +48,7 @@ end
48
48
 
49
49
  describe 'DocumentLink' do
50
50
  before do
51
- @document_link = Prismic::Fragments::DocumentLink.new("UdUjvt_mqVNObPeO", "product", ["Macaron"], "dark-chocolate-macaron", false)
51
+ @document_link = Prismic::Fragments::DocumentLink.new("UdUjvt_mqVNObPeO", nil, "product", ["Macaron"], "dark-chocolate-macaron", {}, false)
52
52
  end
53
53
 
54
54
  describe 'url' do
@@ -623,9 +623,11 @@ describe 'StructuredText::Hyperlink' do
623
623
  before do
624
624
  @link = Prismic::Fragments::DocumentLink.new(
625
625
  "UdUjvt_mqVNObPeO",
626
+ nil,
626
627
  "product",
627
628
  ["Macaron"],
628
629
  "dark-chocolate-macaron",
630
+ {},
629
631
  false # not broken
630
632
  )
631
633
  @hyperlink = Prismic::Fragments::StructuredText::Span::Hyperlink.new(0, 0, @link)
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
 
4
4
  describe 'LesBonnesChoses' do
5
5
  before do
6
- @api = Prismic.api('https://lesbonneschoses.prismic.io/api', nil)
6
+ @api = Prismic.api('https://lesbonneschoses.cdn.prismic.io/api', nil)
7
7
  @master_ref = @api.master_ref
8
8
  end
9
9
 
@@ -19,86 +19,86 @@ describe 'LesBonnesChoses' do
19
19
  @api.form('everything').submit(@master_ref).results.size.should == 20
20
20
  end
21
21
 
22
- it "queries macarons (using a predicate) and returns 7 documents" do
23
- @api.form("everything")
24
- .query(%([[:d = any(document.tags, ["Macaron"])]]))
22
+ it 'queries macarons (using a predicate) and returns 7 documents' do
23
+ @api.form('everything')
24
+ .query('[[:d = any(document.tags, ["Macaron"])]]')
25
25
  .submit(@master_ref).results.size.should == 7
26
- @api.form("everything")
27
- .query(%([[:d = any(document.tags, ["Macaron"])]]))
26
+ @api.form('everything')
27
+ .query('[[:d = any(document.tags, ["Macaron"])]]')
28
28
  .submit(@master_ref).size.should == 7
29
29
  end
30
30
 
31
- it "queries macarons (using a form) and returns 7 documents" do
32
- @api.form("macarons").submit(@master_ref).results.size.should == 7
33
- @api.form("macarons").submit(@master_ref).size.should == 7
31
+ it 'queries macarons (using a form) and returns 7 documents' do
32
+ @api.form('macarons').submit(@master_ref).results.size.should == 7
33
+ @api.form('macarons').submit(@master_ref).size.should == 7
34
34
  end
35
35
 
36
- it "queries macarons or cupcakes (using a form + a predicate) and returns 11 documents" do
37
- @api.form("products")
38
- .query(%([[:d = any(document.tags, ["Cupcake", "Macaron"])]]))
36
+ it 'queries macarons or cupcakes (using a form + a predicate) and returns 11 documents' do
37
+ @api.form('products')
38
+ .query('[[:d = any(document.tags, ["Cupcake", "Macaron"])]]')
39
39
  .submit(@master_ref).results.size.should == 11
40
- @api.form("products")
41
- .query(%([[:d = any(document.tags, ["Cupcake", "Macaron"])]]))
40
+ @api.form('products')
41
+ .query('[[:d = any(document.tags, ["Cupcake", "Macaron"])]]')
42
42
  .submit(@master_ref).size.should == 11
43
43
  end
44
44
  end
45
45
 
46
46
  describe 'pagination' do
47
- it "works in basic cases" do
48
- documents = @api.form("everything").submit(@master_ref)
47
+ it 'works in basic cases' do
48
+ documents = @api.form('everything').submit(@master_ref)
49
49
  documents.page.should == 1
50
50
  documents.results_per_page.should == 20
51
51
  documents.results_size.should == 20
52
52
  documents.total_results_size.should == 40
53
53
  documents.total_pages.should == 2
54
- documents.next_page.should == "https://lesbonneschoses.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&page=2&pageSize=20"
54
+ documents.next_page.should == 'https://lesbonneschoses.cdn.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&page=2&pageSize=20'
55
55
  documents.prev_page.should == nil
56
56
  end
57
- it "works when passing nil" do
58
- documents = @api.form("everything").page(nil).submit(@master_ref)
57
+ it 'works when passing nil' do
58
+ documents = @api.form('everything').page(nil).submit(@master_ref)
59
59
  documents.page.should == 1
60
60
  documents.results_per_page.should == 20
61
61
  documents.results_size.should == 20
62
62
  documents.total_results_size.should == 40
63
63
  documents.total_pages.should == 2
64
- documents.next_page.should == "https://lesbonneschoses.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&page=2&pageSize=20"
64
+ documents.next_page.should == 'https://lesbonneschoses.cdn.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&page=2&pageSize=20'
65
65
  documents.prev_page.should == nil
66
66
  end
67
- it "works on page 2" do
68
- documents = @api.form("everything").page("2").submit(@master_ref)
67
+ it 'works on page 2' do
68
+ documents = @api.form('everything').page("2").submit(@master_ref)
69
69
  documents.page.should == 2
70
70
  documents.results_per_page.should == 20
71
71
  documents.results_size.should == 20
72
72
  documents.total_results_size.should == 40
73
73
  documents.total_pages.should == 2
74
74
  documents.next_page.should == nil
75
- documents.prev_page.should == "https://lesbonneschoses.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&page=1&pageSize=20"
75
+ documents.prev_page.should == 'https://lesbonneschoses.cdn.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&page=1&pageSize=20'
76
76
  end
77
- it "works on page 2 with a pagination step of 10" do
78
- documents = @api.form("everything").page("2").page_size("10").submit(@master_ref)
77
+ it 'works on page 2 with a pagination step of 10' do
78
+ documents = @api.form('everything').page('2').page_size('10').submit(@master_ref)
79
79
  documents.page.should == 2
80
80
  documents.results_per_page.should == 10
81
81
  documents.results_size.should == 10
82
82
  documents.total_results_size.should == 40
83
83
  documents.total_pages.should == 4
84
- documents.next_page.should == "https://lesbonneschoses.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&page=3&pageSize=10"
85
- documents.prev_page.should == "https://lesbonneschoses.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&page=1&pageSize=10"
84
+ documents.next_page.should == 'https://lesbonneschoses.cdn.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&page=3&pageSize=10'
85
+ documents.prev_page.should == 'https://lesbonneschoses.cdn.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&page=1&pageSize=10'
86
86
  end
87
- it "works when passing nil" do
88
- documents = @api.form("everything").page(nil).submit(@master_ref)
87
+ it 'works when passing nil' do
88
+ documents = @api.form('everything').page(nil).submit(@master_ref)
89
89
  documents.page.should == 1
90
90
  documents.results_per_page.should == 20
91
91
  documents.results_size.should == 20
92
92
  documents.total_results_size.should == 40
93
93
  documents.total_pages.should == 2
94
- documents.next_page.should == "https://lesbonneschoses.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&page=2&pageSize=20"
94
+ documents.next_page.should == 'https://lesbonneschoses.cdn.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&page=2&pageSize=20'
95
95
  documents.prev_page.should == nil
96
96
  end
97
97
  end
98
98
 
99
99
  describe 'API::Document' do
100
100
  before do
101
- @document = @api.form('everything').query(%([[:d = at(document.id, "UlfoxUnM0wkXYXbh")]])).submit(@master_ref)[0]
101
+ @document = @api.form('everything').query('[[:d = at(document.id, "UlfoxUnM0wkXYXbh")]]').submit(@master_ref)[0]
102
102
  end
103
103
 
104
104
  it 'Operator [] works on document' do
@@ -112,7 +112,7 @@ describe 'LesBonnesChoses' do
112
112
  it 'Operator [] raises error if field is nonsense' do
113
113
  expect {
114
114
  @document['blablabla']
115
- }.to raise_error(ArgumentError, "Argument should contain one dot. Example: product.price")
115
+ }.to raise_error(ArgumentError, 'Argument should contain one dot. Example: product.price')
116
116
  end
117
117
  end
118
118
 
@@ -138,6 +138,17 @@ describe 'LesBonnesChoses' do
138
138
  end
139
139
  end
140
140
 
141
+ describe 'FetchLinks' do
142
+ it 'Fetches additional data with DocumentLink' do
143
+ documents = @api.form('everything')
144
+ .query(Prismic::Predicates::at('document.id', 'UlfoxUnM0wkXYXbt'))
145
+ .fetch_links('blog-post.author')
146
+ .submit(@master_ref).results
147
+ link = documents[0].get('blog-post.relatedpost')[0]
148
+ link.get_text('blog-post.author').value.should == 'John M. Martelle, Fine Pastry Magazine'
149
+ end
150
+ end
151
+
141
152
  describe 'Fragments' do
142
153
  before do
143
154
  @link_resolver = Prismic.link_resolver("master"){|doc_link| "http://localhost/#{doc_link.id}" }
@@ -158,7 +169,7 @@ describe 'LesBonnesChoses' do
158
169
  "<p>A lot of people touch base with us to know about one of our key ingredients, and the essential role it plays in our creations: ganache.</p>\n\n"\
159
170
  "<p>Indeed, ganache is the macaron's softener, or else, macarons would be but tough biscuits; it is the cupcake's wrapper, or else, cupcakes would be but plain old cake. We even sometimes use ganache within our cupcakes, to soften the cake itself, or as a support to our pies' content.</p>\n\n"\
160
171
  "<h2>How to approach ganache</h2>\n\n"\
161
- "<p class=\"block-img\"><img src=\"https://prismic-io.s3.amazonaws.com/lesbonneschoses/ee7b984b98db4516aba2eabd54ab498293913c6c.jpg\" alt=\"\" width=\"640\" height=\"425\" /></p>\n\n"\
172
+ "<p class=\"block-img\"><img src=\"https://lesbonneschoses.cdn.prismic.io/lesbonneschoses/ee7b984b98db4516aba2eabd54ab498293913c6c.jpg\" alt=\"\" width=\"640\" height=\"425\" /></p>\n\n"\
162
173
  "<p>Apart from the taste balance, which is always a challenge when it comes to pastry, the tough part about ganache is about thickness. It is even harder to predict through all the phases the ganache gets to meet (how long will it get melted? how long will it remain in the fridge?). "\
163
174
  "Things get a hell of a lot easier to get once you consider that there are two main ways to get the perfect ganache:</p>\n\n"\
164
175
  "<ul><li><strong>working from the top down</strong>: start with a thick, almost hard material, and soften it by manipulating it, or by mixing it with a more liquid ingredient (like milk)</li>"\
@@ -180,7 +191,7 @@ describe 'LesBonnesChoses' do
180
191
  "<p>As a child, Jean-Michel Pastranova learned the art of fine cuisine from his grand-father, Jacques Pastranova, who was the creator of the &quot;taste-design&quot; art current, and still today an unmissable reference of forward-thinking in cuisine. At first an assistant in his grand-father's kitchen, Jean-Michel soon found himself fascinated by sweet flavors and the tougher art of pastry, drawing his own path in the ever-changing cuisine world.</p>\n\n"\
181
192
  "<p>In 1992, the first Les Bonnes Choses store opened on rue Saint-Lazare, in Paris (<a href=\"http://localhost/UlfoxUnM0wkXYXbb\">we're still there!</a>), much to everyone's surprise; indeed, back then, it was very surprising for a highly promising young man with a preordained career as a restaurant chef, to open a pastry shop instead. But soon enough, contemporary chefs understood that Jean-Michel had the drive to redefine a new nobility to pastry, the same way many other kinds of cuisine were being qualified as &quot;fine&quot;.</p>\n\n"\
182
193
  "<p>In 1996, meeting an overwhelming demand, Jean-Michel Pastranova opened <a href=\"http://localhost/UlfoxUnM0wkXYXbP\">a second shop on Paris's Champs-Élysées</a>, and <a href=\"http://localhost/UlfoxUnM0wkXYXbr\">a third one in London</a>, the same week! Eventually, Les Bonnes Choses gained an international reputation as &quot;a perfection so familiar and new at the same time, that it will feel like a taste travel&quot; (New York Gazette), &quot;the finest balance between surprise and comfort, enveloped in sweetness&quot; (The Tokyo Tribune), &quot;a renewal of the pastry genre (...), the kind that changed the way pastry is approached globally&quot; (The San Francisco Gourmet News). Therefore, it was only a matter of time before Les Bonnes Choses opened shops in <a href=\"http://localhost/UlfoxUnM0wkXYXbc\">New York</a> (2000) and <a href=\"http://localhost/UlfoxUnM0wkXYXbU\">Tokyo</a> (2004).</p>\n\n"\
183
- "<p>In 2013, Jean-Michel Pastranova stepped down as the CEO and Director of Workshops, remaining a senior advisor to the board and to the workshop artists; he passed the light on to Selena, his daugther, who initially learned the art of pastry from him. Passion for great food runs in the Pastranova family...</p>\n\n<img src=\"https://prismic-io.s3.amazonaws.com/lesbonneschoses/df6c1d87258a5bfadf3479b163fd85c829a5c0b8.jpg\" alt=\"\" width=\"800\" height=\"533\" />\n\n"\
194
+ "<p>In 2013, Jean-Michel Pastranova stepped down as the CEO and Director of Workshops, remaining a senior advisor to the board and to the workshop artists; he passed the light on to Selena, his daugther, who initially learned the art of pastry from him. Passion for great food runs in the Pastranova family...</p>\n\n<img src=\"https://lesbonneschoses.cdn.prismic.io/lesbonneschoses/df6c1d87258a5bfadf3479b163fd85c829a5c0b8.jpg\" alt=\"\" width=\"800\" height=\"533\" />\n\n"\
184
195
  "<h2>Our main value: our customers' delight</h2>\n\n"\
185
196
  "<p>Our every action is driven by the firm belief that there is art in pastry, and that this art is one of the dearest pleasures one can experience.</p>\n\n"\
186
197
  "<p>At Les Bonnes Choses, people preparing your macarons are not simply &quot;pastry chefs&quot;: they are &quot;<a href=\"http://localhost/UlfoxUnM0wkXYXba\">ganache specialists</a>&quot;, &quot;<a href=\"http://localhost/UlfoxUnM0wkXYXbQ\">fruit experts</a>&quot;, or &quot;<a href=\"http://localhost/UlfoxUnM0wkXYXbn\">oven instrumentalists</a>&quot;. They are the best people out there to perform the tasks they perform to create your pastry, giving it the greatest value. And they just love to make their specialized pastry skill better and better until perfection.</p>\n\n"\
@@ -196,7 +207,7 @@ describe 'LesBonnesChoses' do
196
207
  "<p>As a child, Jean-Michel Pastranova learned the art of fine cuisine from his grand-father, Jacques Pastranova, who was the creator of the &quot;taste-design&quot; art current, and still today an unmissable reference of forward-thinking in cuisine. At first an assistant in his grand-father's kitchen, Jean-Michel soon found himself fascinated by sweet flavors and the tougher art of pastry, drawing his own path in the ever-changing cuisine world.</p>\n\n"\
197
208
  "<p>In 1992, the first Les Bonnes Choses store opened on rue Saint-Lazare, in Paris (<a href=\"http://localhost/UlfoxUnM0wkXYXbb\">we're still there!</a>), much to everyone's surprise; indeed, back then, it was very surprising for a highly promising young man with a preordained career as a restaurant chef, to open a pastry shop instead. But soon enough, contemporary chefs understood that Jean-Michel had the drive to redefine a new nobility to pastry, the same way many other kinds of cuisine were being qualified as &quot;fine&quot;.</p>\n\n"\
198
209
  "<p>In 1996, meeting an overwhelming demand, Jean-Michel Pastranova opened <a href=\"http://localhost/UlfoxUnM0wkXYXbP\">a second shop on Paris's Champs-Élysées</a>, and <a href=\"http://localhost/UlfoxUnM0wkXYXbr\">a third one in London</a>, the same week! Eventually, Les Bonnes Choses gained an international reputation as &quot;a perfection so familiar and new at the same time, that it will feel like a taste travel&quot; (New York Gazette), &quot;the finest balance between surprise and comfort, enveloped in sweetness&quot; (The Tokyo Tribune), &quot;a renewal of the pastry genre (...), the kind that changed the way pastry is approached globally&quot; (The San Francisco Gourmet News). Therefore, it was only a matter of time before Les Bonnes Choses opened shops in <a href=\"http://localhost/UlfoxUnM0wkXYXbc\">New York</a> (2000) and <a href=\"http://localhost/UlfoxUnM0wkXYXbU\">Tokyo</a> (2004).</p>\n\n"\
199
- "<p>In 2013, Jean-Michel Pastranova stepped down as the CEO and Director of Workshops, remaining a senior advisor to the board and to the workshop artists; he passed the light on to Selena, his daugther, who initially learned the art of pastry from him. Passion for great food runs in the Pastranova family...</p>\n\n<p class=\"block-img\"><img src=\"https://prismic-io.s3.amazonaws.com/lesbonneschoses/df6c1d87258a5bfadf3479b163fd85c829a5c0b8.jpg\" alt=\"\" width=\"800\" height=\"533\" /></p>\n\n"\
210
+ "<p>In 2013, Jean-Michel Pastranova stepped down as the CEO and Director of Workshops, remaining a senior advisor to the board and to the workshop artists; he passed the light on to Selena, his daugther, who initially learned the art of pastry from him. Passion for great food runs in the Pastranova family...</p>\n\n<p class=\"block-img\"><img src=\"https://lesbonneschoses.cdn.prismic.io/lesbonneschoses/df6c1d87258a5bfadf3479b163fd85c829a5c0b8.jpg\" alt=\"\" width=\"800\" height=\"533\" /></p>\n\n"\
200
211
  "<h2>Our main value: our customers' delight</h2>\n\n"\
201
212
  "<p>Our every action is driven by the firm belief that there is art in pastry, and that this art is one of the dearest pleasures one can experience.</p>\n\n"\
202
213
  "<p>At Les Bonnes Choses, people preparing your macarons are not simply &quot;pastry chefs&quot;: they are &quot;<a href=\"http://localhost/UlfoxUnM0wkXYXba\">ganache specialists</a>&quot;, &quot;<a href=\"http://localhost/UlfoxUnM0wkXYXbQ\">fruit experts</a>&quot;, or &quot;<a href=\"http://localhost/UlfoxUnM0wkXYXbn\">oven instrumentalists</a>&quot;. They are the best people out there to perform the tasks they perform to create your pastry, giving it the greatest value. And they just love to make their specialized pastry skill better and better until perfection.</p>\n\n"\
data/spec/prismic_spec.rb CHANGED
@@ -4,7 +4,7 @@ require 'spec_helper'
4
4
  describe 'Api' do
5
5
  before do
6
6
  json_representation = '{"foo": "bar"}'
7
- @oauth_initiate_url = 'https://lesbonneschoses.prismic.io/auth'
7
+ @oauth_initiate_url = 'https://lesbonneschoses.cdn.prismic.io/auth'
8
8
  @api = Prismic::API.new(json_representation, nil, Prismic::DefaultHTTPClient, false){|api|
9
9
  api.bookmarks = {}
10
10
  api.tags = {}
@@ -24,91 +24,91 @@ describe 'Api' do
24
24
  'form3' => Prismic::Form.new(@api, 'form3', {}, nil, nil, nil, nil),
25
25
  'form4' => Prismic::Form.new(@api, 'form4', {}, nil, nil, nil, nil),
26
26
  }
27
- api.oauth = Prismic::API::OAuth.new(@oauth_initiate_url, "https://lesbonneschoses.prismic.io/auth/token", Prismic::DefaultHTTPClient)
27
+ api.oauth = Prismic::API::OAuth.new(@oauth_initiate_url, 'https://lesbonneschoses.cdn.prismic.io/auth/token', Prismic::DefaultHTTPClient)
28
28
  }
29
29
  end
30
30
 
31
31
  describe 'id' do
32
- it "returns the right id" do
32
+ it 'returns the right id' do
33
33
  @api.ref('key1').id.should == 'id1'
34
34
  end
35
35
  end
36
36
 
37
37
  describe 'ref' do
38
- it "returns the right Ref" do
38
+ it 'returns the right Ref' do
39
39
  @api.ref('key2').label.should == 'label2'
40
40
  end
41
41
  end
42
42
 
43
43
  describe 'refs' do
44
- it "returns the correct number of elements" do
44
+ it 'returns the correct number of elements' do
45
45
  @api.refs.size.should == 4
46
46
  end
47
47
  end
48
48
 
49
49
  describe 'ref_id_by_label' do
50
- it "returns the id of the ref" do
50
+ it 'returns the id of the ref' do
51
51
  @api.ref('key4').ref == 'ref4'
52
52
  end
53
53
  end
54
54
 
55
55
  describe 'master_ref' do
56
- it "returns the right Ref" do
56
+ it 'returns the right Ref' do
57
57
  @api.master_ref.label.should == 'label3'
58
58
  end
59
59
  end
60
60
 
61
61
  describe 'master' do
62
- it "returns the right Ref" do
62
+ it 'returns the right Ref' do
63
63
  @api.master.label.should == 'label3'
64
64
  end
65
65
  end
66
66
 
67
67
  describe 'forms' do
68
- it "return the right Form" do
68
+ it 'return the right Form' do
69
69
  @api.forms['form2'].name.should == 'form2'
70
70
  end
71
71
  end
72
72
 
73
73
  describe 'create_search_form' do
74
- it "create a new search form for the right form" do
74
+ it 'create a new search form for the right form' do
75
75
  @form = @api.form('form2')
76
76
  @form.form.name.should == 'form2'
77
77
  end
78
- it "store default value as simple value when the field is not repeatable" do
78
+ it 'store default value as simple value when the field is not repeatable' do
79
79
  @form = @api.form('form2')
80
80
  @form.data['param1'].should == 'value1'
81
81
  end
82
- it "store default value as array when the field is repeatable" do
82
+ it 'store default value as array when the field is repeatable' do
83
83
  @form = @api.form('form2')
84
84
  @form.data['q'].should == ['[[any(document.type, [\"product\"])]]']
85
85
  end
86
86
  end
87
87
 
88
88
  describe 'deprecated create_search_form' do
89
- it "create a new search form for the right form" do
90
- @api.should_receive(:warn).with("[DEPRECATION] `create_search_form` is deprecated. Please use `form` instead.")
89
+ it 'create a new search form for the right form' do
90
+ @api.should_receive(:warn).with('[DEPRECATION] `create_search_form` is deprecated. Please use `form` instead.')
91
91
  @form = @api.create_search_form('form2')
92
92
  @form.form.name.should == 'form2'
93
93
  end
94
- it "store default value as simple value when the field is not repeatable" do
94
+ it 'store default value as simple value when the field is not repeatable' do
95
95
  @form = @api.create_search_form('form2')
96
96
  @form.data['param1'].should == 'value1'
97
97
  end
98
- it "store default value as array when the field is repeatable" do
98
+ it 'store default value as array when the field is repeatable' do
99
99
  @form = @api.create_search_form('form2')
100
100
  @form.data['q'].should == ['[[any(document.type, [\"product\"])]]']
101
101
  end
102
102
  end
103
103
 
104
104
  describe 'forms' do
105
- it "returns the correct number of elements" do
105
+ it 'returns the correct number of elements' do
106
106
  @api.forms.size.should == 4
107
107
  end
108
108
  end
109
109
 
110
110
  describe 'master' do
111
- it "returns a master Ref" do
111
+ it 'returns a master Ref' do
112
112
  @api.master.master?.should be_true
113
113
  end
114
114
  end
@@ -120,19 +120,19 @@ describe 'Api' do
120
120
  @parsed = Prismic::API.parse_api_response(@json, nil, Prismic::DefaultHTTPClient, false)
121
121
  end
122
122
 
123
- it "does not allow to be created without master Ref" do
123
+ it 'does not allow to be created without master Ref' do
124
124
  expect {
125
- Prismic::API.parse_api_response({"refs" => []}, nil, Prismic::DefaultHTTPClient, false)
126
- }.to raise_error(Prismic::API::BadPrismicResponseError, "No master Ref found")
125
+ Prismic::API.parse_api_response({'refs' => []}, nil, Prismic::DefaultHTTPClient, false)
126
+ }.to raise_error(Prismic::API::BadPrismicResponseError, 'No master Ref found')
127
127
  end
128
128
 
129
- it "does not allow to be created without any Ref" do
129
+ it 'does not allow to be created without any Ref' do
130
130
  expect {
131
131
  Prismic::API.parse_api_response({}, nil, Prismic::DefaultHTTPClient, false)
132
- }.to raise_error(Prismic::API::BadPrismicResponseError, "No refs given")
132
+ }.to raise_error(Prismic::API::BadPrismicResponseError, 'No refs given')
133
133
  end
134
134
 
135
- it "creates 2 refs" do
135
+ it 'creates 2 refs' do
136
136
  @parsed.refs.size.should == 2
137
137
  end
138
138
 
@@ -148,31 +148,31 @@ describe 'Api' do
148
148
  @parsed.refs['bar'].master?.should == false
149
149
  end
150
150
 
151
- it "creates 3 bookmarks" do
151
+ it 'creates 3 bookmarks' do
152
152
  @parsed.bookmarks.size.should == 3
153
153
  end
154
154
 
155
- it "creates the right bookmarks" do
155
+ it 'creates the right bookmarks' do
156
156
  @parsed.bookmarks['about'].should == 'Ue0EDd_mqb8Dhk3j'
157
157
  end
158
158
 
159
- it "creates 6 types" do
159
+ it 'creates 6 types' do
160
160
  @parsed.types.size.should == 6
161
161
  end
162
162
 
163
- it "creates the right types" do
163
+ it 'creates the right types' do
164
164
  @parsed.types['blog-post'].should == 'Blog post'
165
165
  end
166
166
 
167
- it "creates 4 tags" do
167
+ it 'creates 4 tags' do
168
168
  @parsed.tags.size.should == 4
169
169
  end
170
170
 
171
- it "creates the right tags" do
171
+ it 'creates the right tags' do
172
172
  @parsed.tags.should include 'Cupcake'
173
173
  end
174
174
 
175
- it "creates 10 forms" do
175
+ it 'creates 10 forms' do
176
176
  @parsed.forms.size.should == 10
177
177
  end
178
178
 
@@ -193,18 +193,18 @@ describe 'Api' do
193
193
  end
194
194
 
195
195
  it "creates the right form's action" do
196
- @parsed.forms['pies'].action.should == 'http://lesbonneschoses.prismic.io/api/documents/search'
196
+ @parsed.forms['pies'].action.should == 'http://lesbonneschoses.cdn.prismic.io/api/documents/search'
197
197
  end
198
198
 
199
- it "creates forms with the right fields" do
199
+ it 'creates forms with the right fields' do
200
200
  @parsed.forms['pies'].fields.size.should == 2
201
201
  end
202
202
 
203
- it "creates forms with the right type info" do
203
+ it 'creates forms with the right type info' do
204
204
  @parsed.forms['pies'].fields['ref'].field_type.should == 'String'
205
205
  end
206
206
 
207
- it "creates forms with the right default info" do
207
+ it 'creates forms with the right default info' do
208
208
  @parsed.forms['pies'].fields['q'].default.should ==
209
209
  '[[at(document.tags, ["Pie"])][any(document.type, ["product"])]]'
210
210
  end
@@ -224,33 +224,33 @@ describe 'Api' do
224
224
  @json = @api.as_json
225
225
  end
226
226
 
227
- it "returns the json representation of the api" do
227
+ it 'returns the json representation of the api' do
228
228
  JSON.load(@json)['foo'].should == 'bar'
229
229
  end
230
230
 
231
- it "returns the json representation of the api containing one single element" do
231
+ it 'returns the json representation of the api containing one single element' do
232
232
  JSON.load(@json).size.should == 1
233
233
  end
234
234
  end
235
235
 
236
- describe "oauth_initiate_url" do
236
+ describe 'oauth_initiate_url' do
237
237
  before do
238
- @client_id = "client_id"
239
- @redirect_uri = "http://website/callback"
240
- @scope = "none"
238
+ @client_id = 'client_id'
239
+ @redirect_uri = 'http://website/callback'
240
+ @scope = 'none'
241
241
  end
242
242
  def oauth_initiate_url
243
- Prismic.oauth_initiate_url("https://lesbonneschoses.prismic.io/api", {
243
+ Prismic.oauth_initiate_url('https://lesbonneschoses.cdn.prismic.io/api', {
244
244
  client_id: @client_id,
245
245
  redirect_uri: @redirect_uri,
246
- scope: @scope,
246
+ scope: @scope
247
247
  })
248
248
  end
249
249
  def redirect_uri_encoded
250
250
  CGI.escape(@redirect_uri)
251
251
  end
252
- it "build a valid url" do
253
- oauth_initiate_url.should == "#@oauth_initiate_url?client_id=#@client_id&redirect_uri=#{redirect_uri_encoded}&scope=#@scope"
252
+ it 'build a valid url' do
253
+ oauth_initiate_url.should == "https://lesbonneschoses.prismic.io/auth?client_id=#@client_id&redirect_uri=#{redirect_uri_encoded}&scope=#@scope"
254
254
  end
255
255
  end
256
256
 
@@ -258,19 +258,19 @@ end
258
258
 
259
259
  describe 'LinkResolver' do
260
260
  before do
261
- @doc_link = Prismic::Fragments::DocumentLink.new('id', 'blog-post', ['tag1', 'tag2'], 'my-slug', false)
262
- @document = Prismic::Document.new('id', 'blog-post', nil, ['tag1', 'tag2'], ['my-slug', 'my-other-slug'], nil, nil)
261
+ @doc_link = Prismic::Fragments::DocumentLink.new('id', nil, 'blog-post', ['tag1', 'tag2'], 'my-slug', {}, false)
262
+ @document = Prismic::Document.new('id', nil, 'blog-post', nil, ['tag1', 'tag2'], ['my-slug', 'my-other-slug'], nil)
263
263
 
264
264
  @link_resolver = Prismic::LinkResolver.new(nil) do |doc|
265
265
  '/'+doc.link_type+'/'+doc.id+'/'+doc.slug
266
266
  end
267
267
  end
268
268
 
269
- it "builds the right URL from a DocumentLink" do
269
+ it 'builds the right URL from a DocumentLink' do
270
270
  @link_resolver.link_to(@doc_link).should == '/blog-post/id/my-slug'
271
271
  end
272
272
 
273
- it "builds the right URL from a Document" do
273
+ it 'builds the right URL from a Document' do
274
274
  @link_resolver.link_to(@document).should == '/blog-post/id/my-slug'
275
275
  end
276
276
  end
@@ -278,45 +278,45 @@ end
278
278
  describe 'Document' do
279
279
  before do
280
280
  fragments = {
281
- 'field1' => Prismic::Fragments::DocumentLink.new(nil, nil, nil, nil, nil),
281
+ 'field1' => Prismic::Fragments::DocumentLink.new(nil, nil, nil, nil, nil, {}, nil),
282
282
  'field2' => Prismic::Fragments::WebLink.new('weburl')
283
283
  }
284
- @document = Prismic::Document.new(nil, nil, nil, nil, ['my-slug'], nil, fragments)
284
+ @document = Prismic::Document.new(nil, nil, nil, nil, nil, ['my-slug'], fragments)
285
285
  @link_resolver = Prismic::LinkResolver.new('master'){|doc_link|
286
286
  "http://host/#{doc_link.id}"
287
287
  }
288
288
  end
289
289
 
290
290
  describe 'first_title' do
291
- it "returns the right title" do
291
+ it 'returns the right title' do
292
292
  @document.fragments['field3'] = Prismic::Fragments::StructuredText.new([
293
- Prismic::Fragments::StructuredText::Block::Text.new("This is not a title", []),
294
- Prismic::Fragments::StructuredText::Block::Heading.new("This is a title, but not the highest", [], 3),
295
- Prismic::Fragments::StructuredText::Block::Heading.new("This is the highest title of the fragment, but not the document", [], 2),
296
- Prismic::Fragments::StructuredText::Block::Text.new("This is not a title", [])
293
+ Prismic::Fragments::StructuredText::Block::Text.new('This is not a title', []),
294
+ Prismic::Fragments::StructuredText::Block::Heading.new('This is a title, but not the highest', [], 3),
295
+ Prismic::Fragments::StructuredText::Block::Heading.new('This is the highest title of the fragment, but not the document', [], 2),
296
+ Prismic::Fragments::StructuredText::Block::Text.new('This is not a title', [])
297
297
  ])
298
298
  @document.fragments['field4'] = Prismic::Fragments::StructuredText.new([
299
- Prismic::Fragments::StructuredText::Block::Text.new("This is not a title", []),
300
- Prismic::Fragments::StructuredText::Block::Heading.new("This is a title, but not the highest", [], 3),
301
- Prismic::Fragments::StructuredText::Block::Heading.new("This is the highest title of the document", [], 1),
302
- Prismic::Fragments::StructuredText::Block::Text.new("This is not a title", [])
299
+ Prismic::Fragments::StructuredText::Block::Text.new('This is not a title', []),
300
+ Prismic::Fragments::StructuredText::Block::Heading.new('This is a title, but not the highest', [], 3),
301
+ Prismic::Fragments::StructuredText::Block::Heading.new('This is the highest title of the document', [], 1),
302
+ Prismic::Fragments::StructuredText::Block::Text.new('This is not a title', [])
303
303
  ])
304
304
  @document.fragments['field5'] = Prismic::Fragments::StructuredText.new([
305
- Prismic::Fragments::StructuredText::Block::Text.new("This is not a title", []),
306
- Prismic::Fragments::StructuredText::Block::Heading.new("This is a title, but not the highest", [], 3),
307
- Prismic::Fragments::StructuredText::Block::Heading.new("This is the highest title of the fragment, but not the document", [], 2),
308
- Prismic::Fragments::StructuredText::Block::Text.new("This is not a title", [])
305
+ Prismic::Fragments::StructuredText::Block::Text.new('This is not a title', []),
306
+ Prismic::Fragments::StructuredText::Block::Heading.new('This is a title, but not the highest', [], 3),
307
+ Prismic::Fragments::StructuredText::Block::Heading.new('This is the highest title of the fragment, but not the document', [], 2),
308
+ Prismic::Fragments::StructuredText::Block::Text.new('This is not a title', [])
309
309
  ])
310
- @document.first_title.should == "This is the highest title of the document"
310
+ @document.first_title.should == 'This is the highest title of the document'
311
311
  end
312
312
 
313
- it "returns false if no title" do
313
+ it 'returns false if no title' do
314
314
  @document.first_title.should == false
315
315
  end
316
316
  end
317
317
 
318
318
  describe 'slug' do
319
- it "returns the first slug if found" do
319
+ it 'returns the first slug if found' do
320
320
  @document.slug.should == 'my-slug'
321
321
  end
322
322
 
@@ -327,7 +327,7 @@ describe 'Document' do
327
327
  end
328
328
 
329
329
  describe 'as_html' do
330
- it "returns a <section> HTML element" do
330
+ it 'returns a <section> HTML element' do
331
331
  Nokogiri::XML(@document.as_html(@link_resolver)).child.name.should == 'section'
332
332
  end
333
333
 
@@ -354,47 +354,49 @@ describe 'SearchForm' do
354
354
 
355
355
  describe 'fields methods' do
356
356
 
357
- it "should be created for each valid field names" do
357
+ it 'should be created for each valid field names' do
358
358
  @form = create_form('a_param' => @field)
359
359
  @form.should respond_to(:a_param)
360
360
  end
361
361
 
362
- it "should be created for each valid field names with number" do
362
+ it 'should be created for each valid field names with number' do
363
363
  @form = create_form('a_param2' => @field)
364
364
  @form.should respond_to(:a_param2)
365
365
  end
366
366
 
367
- it "should be created for each camelCase field names" do
367
+ it 'should be created for each camelCase field names' do
368
368
  @form = create_form('anExampleParam0A0B' => @field)
369
369
  @form.should respond_to(:an_example_param0_a0_b)
370
370
  end
371
371
 
372
- it "should not be created for field names begining with a number" do
372
+ it 'should not be created for field names begining with a number' do
373
373
  @form = create_form('2param' => @field)
374
374
  @form.should_not respond_to(:'2param')
375
375
  end
376
376
 
377
- it "should not be created for field names begining with an underscore" do
377
+ it 'should not be created for field names begining with an underscore' do
378
378
  @form = create_form('_param' => @field)
379
379
  @form.should_not respond_to(:'_param')
380
380
  end
381
381
 
382
- it "should not be created for field names containing invalid characters" do
382
+ it 'should not be created for field names containing invalid characters' do
383
383
  @form = create_form('a-param' => @field)
384
384
  @form.should_not respond_to(:'a-param')
385
385
  end
386
386
 
387
- it "should not be created if a method with same name already exists" do
388
- Prismic::SearchForm.module_exec { def param_example_for_tests() "ok" end }
387
+ it 'should not be created if a method with same name already exists' do
388
+ Prismic::SearchForm.module_exec { def param_example_for_tests()
389
+ 'ok'
390
+ end }
389
391
  @form = create_form('param_example_for_tests' => @field)
390
- @form.param_example_for_tests.should == "ok"
392
+ @form.param_example_for_tests.should == 'ok'
391
393
  end
392
394
 
393
395
  end
394
396
 
395
397
  describe 'set() for queries' do
396
398
 
397
- it "append value for repeatable fields" do
399
+ it 'append value for repeatable fields' do
398
400
  @field = Prismic::Field.new('String', 'foo', true)
399
401
  @form = create_form('q' => @field)
400
402
  @form.set('q', 'bar')
@@ -403,7 +405,7 @@ describe 'SearchForm' do
403
405
  @form.data.should == { 'q' => ['foo', 'bar', 'baz'] } # test an other
404
406
  end
405
407
 
406
- it "replace value for non repeatable fields" do
408
+ it 'replace value for non repeatable fields' do
407
409
  @field = Prismic::Field.new('String', 'foo', false)
408
410
  @form = create_form('q' => @field)
409
411
  @form.set('q', 'bar')
@@ -412,26 +414,26 @@ describe 'SearchForm' do
412
414
  @form.data.should == { 'q' => 'baz' } # test an other
413
415
  end
414
416
 
415
- it "create value array for repeatable fields without value" do
417
+ it 'create value array for repeatable fields without value' do
416
418
  @field = Prismic::Field.new('String', nil, true)
417
419
  @form = create_form('q' => @field)
418
420
  @form.set('q', 'bar')
419
421
  @form.data.should == { 'q' => ['bar'] }
420
422
  end
421
423
 
422
- it "create value for non repeatable fields without value" do
424
+ it 'create value for non repeatable fields without value' do
423
425
  @field = Prismic::Field.new('String', nil, false)
424
426
  @form = create_form('q' => @field)
425
427
  @form.set('q', 'bar')
426
428
  @form.data.should == { 'q' => 'bar' }
427
429
  end
428
430
 
429
- it "returns the form itself" do
431
+ it 'returns the form itself' do
430
432
  @form = create_form('q' => @field)
431
433
  @form.query('foo').should equal @form
432
434
  end
433
435
 
434
- it "merge user defined params into default ones" do
436
+ it 'merge user defined params into default ones' do
435
437
  field = ->(value){ Prismic::Field.new('String', value) }
436
438
  default_params = {'param1' => field.('a'), 'param2' => field.('b')}
437
439
  @form = create_form(default_params)
@@ -441,88 +443,10 @@ describe 'SearchForm' do
441
443
  end
442
444
 
443
445
  describe 'submit' do
444
- it "raises an exception if no ref is set" do
446
+ it 'raises an exception if no ref is set' do
445
447
  @form = create_form('q' => @field)
446
448
  expect { @form.submit }.to raise_error Prismic::SearchForm::NoRefSetException
447
449
  end
448
450
  end
449
451
 
450
- describe 'submit_raw' do
451
- before do
452
- @api = Prismic.api("https://lesbonneschoses.prismic.io/api")
453
- @master_ref = @api.master_ref
454
- end
455
- it "returns a proper JSON string if all ok" do
456
- data = <<-DATA.gsub(/\n */, '').strip
457
- {
458
- "page":1,
459
- "results_per_page":1,
460
- "results_size":1,
461
- "total_results_size":40,
462
- "total_pages":40,
463
- "next_page":"https://lesbonneschoses.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&page=2&pageSize=1",
464
- "prev_page":null,
465
- "results":[{
466
- "id":"UlfoxUnM0wkXYXbV",
467
- "type":"job-offer",
468
- "href":"https://lesbonneschoses.prismic.io/api/documents/search?ref=UlfoxUnM08QWYXdl&q=%5B%5B%3Ad+%3D+at%28document.id%2C+%22UlfoxUnM0wkXYXbV%22%29+%5D%5D",
469
- "tags":[],
470
- "slugs":["art-director"],
471
- "linked_documents":[{
472
- "id":"UlfoxUnM0wkXYXbb",
473
- "tags":[],
474
- "type":"store",
475
- "slug":"paris-saint-lazare"
476
- }],
477
- "data":{
478
- "job-offer":{
479
- "name":{
480
- "type":"StructuredText",
481
- "value":[{"type":"heading1","text":"Art Director","spans":[]}]
482
- },
483
- "location":[{
484
- "type":"Link.document",
485
- "value":{
486
- "document":{
487
- "id":"UlfoxUnM0wkXYXbb",
488
- "type":"store",
489
- "tags":[],
490
- "slug":"paris-saint-lazare"
491
- },
492
- "isBroken":false
493
- }
494
- }],
495
- "contract_type":{"type":"Select","value":"Permanent"},
496
- "service":{"type":"Select","value":"Office"},
497
- "profile":{
498
- "type":"StructuredText",
499
- "value":[{
500
- "type":"paragraph",
501
- "text":"Brand visual identity must be vital to you, and you must have a thorough experience with working for/with great visual brands. We will ask you to present your previous work, and explain your choices, so be prepared. Previous work with luxury brands is a plus.",
502
- "spans":[]
503
- }]
504
- },
505
- "job_description":{
506
- "type":"StructuredText",
507
- "value":[{
508
- "type":"paragraph",
509
- "text":"As our only Art director, you will be the one in charge of every design aspect of Les Bonnes Choses, from the design of our pastry boxes, of our shop fronts, of our website, ... You will lead a team of more specialized people, and you will be expected to be able to travel from time to time.",
510
- "spans":[]
511
- },{
512
- "type":"paragraph",
513
- "text":"You will be the vessel that will bring emotions to our clientbase, before they tasted our pastries. We are aware the responsibility is huge, and we hope that you are too.",
514
- "spans":[]
515
- }]
516
- }
517
- }
518
- }
519
- }],
520
- "version":"61d96e9",
521
- "license":"All Rights Reserved"
522
- }
523
- DATA
524
- rx = Regexp.escape(data).sub(/"version":"[^"]+"/, '"version":"[^"]+"')
525
- @api.form("everything").page_size('1').submit_raw(@master_ref).should =~ /#{rx}/
526
- end
527
- end
528
452
  end