qbrick 2.6.0 → 2.6.1

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.
@@ -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.