qbrick 2.6.0 → 2.6.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -32,10 +32,10 @@ describe Qbrick::Page, type: :model do
32
32
  end
33
33
  end
34
34
 
35
- describe '.find_by_url' do
35
+ describe '.find_by_path' do
36
36
  it 'should find its translated content by url' do
37
37
  page = create(:page)
38
- expect(Qbrick::Page.find_by_url(page.url)).to eq(page)
38
+ expect(Qbrick::Page.find_by_path(page.path)).to eq(page)
39
39
  end
40
40
  end
41
41
 
@@ -253,7 +253,7 @@ describe Qbrick::Page, type: :model do
253
253
  it 'returns the concatenated slug of the whole child/parent tree' do
254
254
  page = create(:page, slug: 'parent-slug')
255
255
  child = create(:page, slug: 'child-slug', parent: page)
256
- expect(child.url).to eq('en/parent-slug/child-slug')
256
+ expect(child.path).to eq('/parent-slug/child-slug')
257
257
  end
258
258
  end
259
259
 
@@ -261,21 +261,25 @@ describe Qbrick::Page, type: :model do
261
261
  it 'returns without the parent page slug' do
262
262
  page = create(:page, slug: 'parent-slug', page_type: Qbrick::PageType::NAVIGATION)
263
263
  child = create(:page, slug: 'child-slug', parent: page)
264
- expect(child.url).to eq('en/child-slug')
264
+ expect(child.path).to eq('/child-slug')
265
265
  end
266
266
  end
267
267
 
268
268
  context 'when it is a redirect? page' do
269
269
  it 'returns the absolute url' do
270
- page = create(:page, page_type: Qbrick::PageType::REDIRECT, redirect_url: 'en/references', slug: 'news')
271
- expect(page.link).to eq('/en/news')
270
+ I18n.with_locale(:en) do
271
+ page = create(:page, page_type: Qbrick::PageType::REDIRECT, redirect_url: 'en/references', slug: 'news')
272
+ expect(page.link).to eq('/en/news')
273
+ end
272
274
  end
273
275
  end
274
276
 
275
277
  context 'when url part is empty' do
276
278
  it 'strips the trailing slash' do
277
- page = create(:page, page_type: Qbrick::PageType::NAVIGATION)
278
- expect(page.link).to eq('/en')
279
+ I18n.with_locale(:en) do
280
+ page = create(:page, page_type: Qbrick::PageType::NAVIGATION)
281
+ expect(page.link).to eq('/en')
282
+ end
279
283
  end
280
284
  end
281
285
  end
@@ -324,14 +328,14 @@ describe Qbrick::Page, type: :model do
324
328
 
325
329
  describe '#translated?' do
326
330
  it 'returns true when page is translated' do
327
- @page = create(:page, title: 'Page 1', slug: 'page1')
328
- expect(@page.translated?).to be_truthy
331
+ page = create(:page, title: 'Page 1', slug: 'page1')
332
+ expect(page.translated?).to be_truthy
329
333
  end
330
334
 
331
335
  it 'returns false when page has no translation' do
332
- @page = create(:page, title: 'Page 1', slug: 'page1')
336
+ page = I18n.with_locale(:en) { create :page, title: 'Page 1', slug: 'page1' }
333
337
  I18n.with_locale :de do
334
- expect(@page.translated?).to be_falsey
338
+ expect(page.translated?).to be_falsey
335
339
  end
336
340
  end
337
341
  end
@@ -361,46 +365,24 @@ describe Qbrick::Page, type: :model do
361
365
  end
362
366
 
363
367
  describe '#before_validation' do
364
- it 'generates url automatically' do
368
+ it 'generates path automatically' do
365
369
  page = Qbrick::Page.new slug: 'slug'
366
- expect(page.url).to be_nil
370
+ expect(page.path).to be_nil
367
371
  page.valid?
368
- expect(page.url).to be_present
372
+ expect(page.path).to be_present
369
373
  end
370
374
  end
371
375
 
372
- describe '#after_save' do
373
- context 'when updating a parents page type' do
374
- it 'updates the child pages url if parent is changed to navigation' do
375
- @parent_page = FactoryGirl.create(:page, slug: 'le_parent')
376
- @child_page = FactoryGirl.create(:page, slug: 'le_child', parent: @parent_page)
377
-
378
- @parent_page.update_attributes(page_type: Qbrick::PageType::NAVIGATION)
379
- expect(@child_page.reload.url).to eq("#{I18n.locale}/le_child")
380
- end
381
-
382
- it 'updates the child pages url if parent is changed to content' do
383
- @parent_page = FactoryGirl.create(:page, slug: 'le_parent', page_type: Qbrick::PageType::NAVIGATION)
384
- @child_page = FactoryGirl.create(:page, slug: 'le_child', parent: @parent_page)
385
-
386
- @parent_page.update_attributes(page_type: Qbrick::PageType::CONTENT)
387
- expect(@child_page.reload.url).to eq("#{I18n.locale}/le_parent/le_child")
388
- end
389
- end
390
- end
391
-
392
- describe '#url_without_locale' do
393
- let :page do
394
- create(:page, slug: 'page')
395
- end
376
+ describe '#path' do
377
+ let(:page) { create :page, slug: 'page' }
396
378
 
397
379
  context 'without parent' do
398
- it 'returns url without leading /' do
399
- expect(page.url_without_locale).not_to start_with '/'
380
+ it 'returns path with leading /' do
381
+ expect(page.path).to start_with '/'
400
382
  end
401
383
 
402
384
  it 'returns a single slug' do
403
- expect(page.url_without_locale).to eq('page')
385
+ expect(page.path).to eq('/page')
404
386
  end
405
387
  end
406
388
 
@@ -413,12 +395,12 @@ describe Qbrick::Page, type: :model do
413
395
  create(:page, slug: 'child', parent: parent)
414
396
  end
415
397
 
416
- it 'returns url without leading /' do
417
- expect(child.url_without_locale).not_to start_with '/'
398
+ it 'returns path with leading /' do
399
+ expect(child.path).to start_with '/'
418
400
  end
419
401
 
420
402
  it 'does not concatenate the parent slug' do
421
- expect(child.url_without_locale).to eq('child')
403
+ expect(child.path).to eq('/child')
422
404
  end
423
405
  end
424
406
 
@@ -431,25 +413,29 @@ describe Qbrick::Page, type: :model do
431
413
  create(:page, slug: 'child', parent: parent)
432
414
  end
433
415
 
434
- it 'returns url without leading /' do
435
- expect(child.url_without_locale).not_to start_with '/'
416
+ it 'returns path with leading /' do
417
+ expect(child.path).to start_with '/'
436
418
  end
437
419
 
438
420
  it 'does not concatenate the parent slug' do
439
- expect(child.url_without_locale).to eq('parent/child')
421
+ expect(child.path).to eq('/parent/child')
440
422
  end
441
423
  end
442
424
  end
443
425
 
444
426
  describe '#translated' do
445
427
  before :each do
446
- @page_1 = create(:page, title: 'Page 1', slug: 'page1')
447
- @page_2 = create(:page, title: 'Page 2', slug: 'page1')
448
- @page_3 = create(:page, title: 'Page 3', slug: 'page1')
428
+ I18n.with_locale(:en) do
429
+ @page_1 = create(:page, title: 'Page 1', slug: 'page1')
430
+ @page_2 = create(:page, title: 'Page 2', slug: 'page1')
431
+ @page_3 = create(:page, title: 'Page 3', slug: 'page1')
432
+ end
449
433
  end
450
434
 
451
435
  it 'returns all pages that have a translation' do
452
- expect(Qbrick::Page.translated).to eq [@page_1, @page_2, @page_3]
436
+ I18n.with_locale(:en) do
437
+ expect(Qbrick::Page.translated).to eq [@page_1, @page_2, @page_3]
438
+ end
453
439
  end
454
440
 
455
441
  it 'does not return untranslated pages' do
@@ -512,4 +498,43 @@ describe Qbrick::Page, type: :model do
512
498
  expect(@page.bricks.unscoped.where(locale: :en).count).to eq(3)
513
499
  end
514
500
  end
501
+
502
+ describe '#create_path' do
503
+ context 'when parent was saved' do
504
+ it 'updates the child pages url if parent is changed to navigation' do
505
+ parent_page = create :page, slug: 'le_parent'
506
+ child_page = create :page, slug: 'le_child', parent: parent_page
507
+ parent_page.save
508
+ expect(child_page.reload.path).to eq '/le_parent/le_child'
509
+
510
+ parent_page.update_attributes page_type: Qbrick::PageType::NAVIGATION
511
+ expect(child_page.reload.path).to eq '/le_child'
512
+ end
513
+
514
+ it 'updates the child pages url if parent is changed to content' do
515
+ parent_page = create(:page, slug: 'le_parent', page_type: Qbrick::PageType::NAVIGATION)
516
+ child_page = create(:page, slug: 'le_child', parent: parent_page)
517
+
518
+ parent_page.update_attributes(page_type: Qbrick::PageType::CONTENT)
519
+ expect(child_page.reload.path).to eq '/le_parent/le_child'
520
+ end
521
+ end
522
+
523
+ it 'creates a root path' do
524
+ root_page = Qbrick::Page.new slug: 'ruth', page_type: Qbrick::PageType::NAVIGATION
525
+ expect(root_page.create_path).to eq ''
526
+ end
527
+
528
+ it 'creates a content page path' do
529
+ content_page = Qbrick::Page.new slug: 'meersaeuli', page_type: Qbrick::PageType::CONTENT
530
+ expect(content_page.create_path).to eq '/meersaeuli'
531
+ end
532
+
533
+ it 'creates a path with children' do
534
+ parent = create :page, slug: 'le_parent'
535
+ child_page = Qbrick::Page.new slug: 'le_child', parent: parent
536
+
537
+ expect(child_page.create_path).to eq '/le_parent/le_child'
538
+ end
539
+ end
515
540
  end
data/spec/spec_helper.rb CHANGED
@@ -72,7 +72,7 @@ RSpec.configure do |config|
72
72
  # config.mock_with :rr
73
73
 
74
74
  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
75
- config.fixture_path = "#{::Rails.root}/spec/fixtures"
75
+ config.fixture_path = ::Rails.root.join('spec/fixtures').to_s
76
76
 
77
77
  # If you're not using ActiveRecord, or you'd prefer not to run each of your
78
78
  # examples within a transaction, remove the following line or assign false
@@ -1,11 +1,12 @@
1
1
  require 'spec_helper'
2
2
  include SitemapsHelper
3
3
 
4
- describe 'qbrick/sitemaps/index.xml.haml', :type => :view do
4
+ describe 'qbrick/sitemaps/index.xml.haml', type: :view do
5
5
  describe 'structure' do
6
+ let(:page) { create :page }
7
+
6
8
  before :each do
7
- @page = create(:page)
8
- @pages = [@page]
9
+ @pages = [page]
9
10
  render
10
11
  end
11
12
 
@@ -18,11 +19,11 @@ describe 'qbrick/sitemaps/index.xml.haml', :type => :view do
18
19
  end
19
20
 
20
21
  it 'includes the loc tag content' do
21
- expect(rendered).to include "<loc>http://#{@request.host}/#{@page.url}</loc>"
22
+ expect(rendered).to include "<loc>http://#{@request.host}#{page.path_with_prefixed_locale}</loc>"
22
23
  end
23
24
 
24
25
  it 'includes the lastmod tag content' do
25
- expect(rendered).to include "<lastmod>#{@page.created_at.utc}</lastmod>"
26
+ expect(rendered).to include "<lastmod>#{page.created_at.utc}</lastmod>"
26
27
  end
27
28
 
28
29
  it 'includes the changefreq tag content' do
@@ -39,7 +40,7 @@ describe 'qbrick/sitemaps/index.xml.haml', :type => :view do
39
40
  allow(I18n).to receive(:available_locales).and_return([:de, :en])
40
41
 
41
42
  I18n.with_locale(:de) do
42
- @page = create(:page, title: 'Dummy Page 1 DE')
43
+ @page = create(:page, title: 'Dummy Page 1 DE', published_de: 1, published_en: 1)
43
44
  @page_de = create(:page, title: 'German Page')
44
45
  end
45
46
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qbrick
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Immanuel Häussermann
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2015-05-20 00:00:00.000000000 Z
15
+ date: 2015-06-03 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rspec-rails
@@ -745,6 +745,7 @@ files:
745
745
  - db/migrate/23_add_metadata_to_asset.rb
746
746
  - db/migrate/23_devise_create_qbrick_admins.rb
747
747
  - db/migrate/24_localize_publish_column.rb
748
+ - db/migrate/25_rename_qbrick_pages_url_to_path.rb
748
749
  - db/seeds.rb
749
750
  - lib/generators/qbrick/assets/install_generator.rb
750
751
  - lib/generators/qbrick/custom_model_generator.rb
@@ -885,7 +886,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
885
886
  version: '0'
886
887
  requirements: []
887
888
  rubyforge_project: qbrick
888
- rubygems_version: 2.2.2
889
+ rubygems_version: 2.4.5
889
890
  signing_key:
890
891
  specification_version: 4
891
892
  summary: A tool that helps you to manage your content within your app.