alchemy_cms 3.1.0.rc1 → 3.1.0.rc2

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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -10
  3. data/.teatro.yml +7 -0
  4. data/Gemfile +13 -13
  5. data/README.md +20 -3
  6. data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +3 -3
  7. data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +5 -0
  8. data/app/controllers/alchemy/admin/essence_files_controller.rb +23 -3
  9. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +7 -2
  10. data/app/controllers/alchemy/admin/pictures_controller.rb +1 -4
  11. data/app/controllers/alchemy/base_controller.rb +3 -1
  12. data/app/controllers/alchemy/pages_controller.rb +3 -1
  13. data/app/models/alchemy/content.rb +0 -3
  14. data/app/models/alchemy/element.rb +1 -2
  15. data/app/models/alchemy/page/page_scopes.rb +3 -1
  16. data/app/models/alchemy/page/page_users.rb +10 -3
  17. data/app/models/alchemy/picture.rb +29 -6
  18. data/app/models/alchemy/picture/transformations.rb +14 -7
  19. data/app/views/alchemy/_menubar.html.erb +1 -1
  20. data/app/views/alchemy/admin/leave.html.erb +1 -1
  21. data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +2 -1
  22. data/config/initializers/dragonfly.rb +0 -2
  23. data/lib/alchemy/engine.rb +0 -1
  24. data/lib/alchemy/locale.rb +15 -13
  25. data/lib/alchemy/upgrader.rb +1 -0
  26. data/lib/alchemy/upgrader/three_point_zero.rb +27 -9
  27. data/lib/alchemy/version.rb +1 -1
  28. data/lib/tasks/alchemy/tidy.rake +34 -16
  29. data/spec/controllers/admin/essence_files_controller_spec.rb +13 -2
  30. data/spec/controllers/admin/essence_pictures_controller_spec.rb +8 -0
  31. data/spec/controllers/pages_controller_spec.rb +42 -0
  32. data/spec/dummy/app/controllers/application_controller.rb +5 -1
  33. data/spec/dummy/app/models/dummy_user.rb +4 -0
  34. data/spec/dummy/bin/bundle +0 -0
  35. data/spec/dummy/bin/rails +0 -0
  36. data/spec/dummy/bin/rake +0 -0
  37. data/spec/dummy/config/environments/production.rb +1 -1
  38. data/spec/dummy/db/seeds.rb +1 -0
  39. data/spec/features/translation_integration_spec.rb +14 -11
  40. data/spec/models/page_spec.rb +143 -52
  41. data/spec/spec_helper.rb +0 -3
  42. data/spec/support/transformation_examples.rb +7 -0
  43. data/spec/views/essences/essence_boolean_editor_spec.rb +1 -0
  44. data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +6 -3
  45. data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +5 -3
  46. data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +97 -46
  47. data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +11 -4
  48. metadata +6 -4
  49. data/lib/extensions/action_view.rb +0 -17
@@ -9,9 +9,9 @@ module Alchemy
9
9
  let(:language) { Language.default }
10
10
  let(:klingonian) { FactoryGirl.create(:klingonian) }
11
11
  let(:language_root) { FactoryGirl.create(:language_root_page) }
12
- let(:page) { mock_model(Page, :page_layout => 'foo') }
12
+ let(:page) { mock_model(Page, page_layout: 'foo') }
13
13
  let(:public_page) { FactoryGirl.create(:public_page) }
14
- let(:news_page) { FactoryGirl.create(:public_page, :page_layout => 'news', :do_not_autogenerate => false) }
14
+ let(:news_page) { FactoryGirl.create(:public_page, page_layout: 'news', do_not_autogenerate: false) }
15
15
 
16
16
 
17
17
  # Validations
@@ -131,7 +131,7 @@ module Alchemy
131
131
 
132
132
  context 'callbacks' do
133
133
  let(:page) do
134
- FactoryGirl.create(:page, :name => 'My Testpage', :language => language, :parent_id => language_root.id)
134
+ FactoryGirl.create(:page, name: 'My Testpage', language: language, parent_id: language_root.id)
135
135
  end
136
136
 
137
137
  context 'before_save' do
@@ -229,7 +229,7 @@ module Alchemy
229
229
 
230
230
  context "a normal page" do
231
231
  before do
232
- @page = FactoryGirl.build(:page, :language_code => nil, :language => klingonian, :do_not_autogenerate => false)
232
+ @page = FactoryGirl.build(:page, language_code: nil, language: klingonian, do_not_autogenerate: false)
233
233
  end
234
234
 
235
235
  it "should set the language code" do
@@ -243,7 +243,7 @@ module Alchemy
243
243
  end
244
244
 
245
245
  it "should not autogenerate elements that are already on the page" do
246
- @page.elements << FactoryGirl.create(:element, :name => 'header')
246
+ @page.elements << FactoryGirl.create(:element, name: 'header')
247
247
  @page.save
248
248
  expect(@page.elements.select { |e| e.name == 'header' }.length).to eq(1)
249
249
  end
@@ -256,7 +256,7 @@ module Alchemy
256
256
  it "should have the generated elements in their cells" do
257
257
  allow(@page).to receive(:cell_definitions).and_return([{'name' => 'header', 'elements' => ['article']}])
258
258
  @page.save
259
- expect(@page.cells.where(:name => 'header').first.elements).not_to be_empty
259
+ expect(@page.cells.where(name: 'header').first.elements).not_to be_empty
260
260
  end
261
261
 
262
262
  context "and no elements in cell definitions" do
@@ -271,7 +271,7 @@ module Alchemy
271
271
  context "with children getting restricted set to true" do
272
272
  before do
273
273
  @page.save
274
- @child1 = FactoryGirl.create(:page, :name => 'Child 1', :parent_id => @page.id)
274
+ @child1 = FactoryGirl.create(:page, name: 'Child 1', parent_id: @page.id)
275
275
  @page.reload
276
276
  @page.restricted = true
277
277
  @page.save
@@ -286,8 +286,8 @@ module Alchemy
286
286
  context "with restricted parent gets created" do
287
287
  before do
288
288
  @page.save
289
- @page.parent.update_attributes(:restricted => true)
290
- @new_page = FactoryGirl.create(:page, :name => 'New Page', :parent_id => @page.id)
289
+ @page.parent.update_attributes(restricted: true)
290
+ @new_page = FactoryGirl.create(:page, name: 'New Page', parent_id: @page.id)
291
291
  end
292
292
 
293
293
  it "should also be restricted" do
@@ -345,8 +345,8 @@ module Alchemy
345
345
  describe '.all_from_clipboard_for_select' do
346
346
  context "with clipboard holding pages having non unique page layout" do
347
347
  it "should return the pages" do
348
- page_1 = FactoryGirl.create(:page, :language => language)
349
- page_2 = FactoryGirl.create(:page, :language => language, :name => 'Another page')
348
+ page_1 = FactoryGirl.create(:page, language: language)
349
+ page_2 = FactoryGirl.create(:page, language: language, name: 'Another page')
350
350
  clipboard = [
351
351
  {'id' => page_1.id.to_s, 'action' => 'copy'},
352
352
  {'id' => page_2.id.to_s, 'action' => 'copy'}
@@ -357,7 +357,7 @@ module Alchemy
357
357
 
358
358
  context "with clipboard holding a page having unique page layout" do
359
359
  it "should not return any pages" do
360
- page_1 = FactoryGirl.create(:page, :language => language, :page_layout => 'contact')
360
+ page_1 = FactoryGirl.create(:page, language: language, page_layout: 'contact')
361
361
  clipboard = [
362
362
  {'id' => page_1.id.to_s, 'action' => 'copy'}
363
363
  ]
@@ -367,8 +367,8 @@ module Alchemy
367
367
 
368
368
  context "with clipboard holding two pages. One having a unique page layout." do
369
369
  it "should return one page" do
370
- page_1 = FactoryGirl.create(:page, :language => language, :page_layout => 'standard')
371
- page_2 = FactoryGirl.create(:page, :name => 'Another page', :language => language, :page_layout => 'contact')
370
+ page_1 = FactoryGirl.create(:page, language: language, page_layout: 'standard')
371
+ page_2 = FactoryGirl.create(:page, name: 'Another page', language: language, page_layout: 'contact')
372
372
  clipboard = [
373
373
  {'id' => page_1.id.to_s, 'action' => 'copy'},
374
374
  {'id' => page_2.id.to_s, 'action' => 'copy'}
@@ -380,17 +380,48 @@ module Alchemy
380
380
 
381
381
  describe '.all_locked' do
382
382
  it "should return 1 page that is blocked by a user at the moment" do
383
- FactoryGirl.create(:public_page, :locked => true, :name => 'First Public Child', :parent_id => language_root.id, :language => language)
383
+ FactoryGirl.create(:public_page, locked: true, name: 'First Public Child', parent_id: language_root.id, language: language)
384
384
  expect(Page.all_locked.size).to eq(1)
385
385
  end
386
386
  end
387
387
 
388
+ describe '.all_locked_by' do
389
+ let(:user) { double(:user, id: 1, class: DummyUser) }
390
+
391
+ before do
392
+ FactoryGirl.create(:public_page, locked: true, locked_by: 53) # This page must not be part of the collection
393
+ allow(user.class)
394
+ .to receive(:primary_key)
395
+ .and_return('id')
396
+ end
397
+
398
+ it "should return the correct page collection blocked by a certain user" do
399
+ page = FactoryGirl.create(:public_page, locked: true, locked_by: 1)
400
+ expect(Page.all_locked_by(user).pluck(:id)).to eq([page.id])
401
+ end
402
+
403
+ context 'with user class having a different primary key' do
404
+ let(:user) { double(:user, user_id: 123, class: DummyUser) }
405
+
406
+ before do
407
+ allow(user.class)
408
+ .to receive(:primary_key)
409
+ .and_return('user_id')
410
+ end
411
+
412
+ it "should return the correct page collection blocked by a certain user" do
413
+ page = FactoryGirl.create(:public_page, locked: true, locked_by: 123)
414
+ expect(Page.all_locked_by(user).pluck(:id)).to eq([page.id])
415
+ end
416
+ end
417
+ end
418
+
388
419
  describe '.contentpages' do
389
420
  before do
390
421
  layoutroot = Page.find_or_create_layout_root_for(klingonian.id)
391
- @layoutpage = FactoryGirl.create(:public_page, :name => 'layoutpage', :layoutpage => true, :parent_id => layoutroot.id, :language => klingonian)
392
- @klingonian_lang_root = FactoryGirl.create(:language_root_page, :name => 'klingonian_lang_root', :layoutpage => nil, :language => klingonian)
393
- @contentpage = FactoryGirl.create(:public_page, :name => 'contentpage', :parent_id => language_root.id, :language => language)
422
+ @layoutpage = FactoryGirl.create(:public_page, name: 'layoutpage', layoutpage: true, parent_id: layoutroot.id, language: klingonian)
423
+ @klingonian_lang_root = FactoryGirl.create(:language_root_page, name: 'klingonian_lang_root', layoutpage: nil, language: klingonian)
424
+ @contentpage = FactoryGirl.create(:public_page, name: 'contentpage', parent_id: language_root.id, language: language)
394
425
  end
395
426
 
396
427
  it "should return a collection of contentpages" do
@@ -407,7 +438,7 @@ module Alchemy
407
438
  end
408
439
 
409
440
  describe '.copy' do
410
- let(:page) { FactoryGirl.create(:page, :name => 'Source') }
441
+ let(:page) { FactoryGirl.create(:page, name: 'Source') }
411
442
  subject { Page.copy(page) }
412
443
 
413
444
  it "the copy should have added (copy) to name" do
@@ -467,7 +498,7 @@ module Alchemy
467
498
  end
468
499
 
469
500
  context "with different page name given" do
470
- subject { Page.copy(page, {:name => 'Different name'}) }
501
+ subject { Page.copy(page, {name: 'Different name'}) }
471
502
  it "should take this name" do
472
503
  expect(subject.name).to eq('Different name')
473
504
  end
@@ -477,12 +508,12 @@ module Alchemy
477
508
  describe '.create' do
478
509
  context "before/after filter" do
479
510
  it "should automatically set the title from its name" do
480
- page = FactoryGirl.create(:page, :name => 'My Testpage', :language => language, :parent_id => language_root.id)
511
+ page = FactoryGirl.create(:page, name: 'My Testpage', language: language, parent_id: language_root.id)
481
512
  expect(page.title).to eq('My Testpage')
482
513
  end
483
514
 
484
515
  it "should get a webfriendly urlname" do
485
- page = FactoryGirl.create(:page, :name => 'klingon$&stößel ', :language => language, :parent_id => language_root.id)
516
+ page = FactoryGirl.create(:page, name: 'klingon$&stößel ', language: language, parent_id: language_root.id)
486
517
  expect(page.urlname).to eq('klingon-stoessel')
487
518
  end
488
519
 
@@ -494,22 +525,22 @@ module Alchemy
494
525
  end
495
526
 
496
527
  it "should generate a three letter urlname from two letter name" do
497
- page = FactoryGirl.create(:page, :name => 'Au', :language => language, :parent_id => language_root.id)
528
+ page = FactoryGirl.create(:page, name: 'Au', language: language, parent_id: language_root.id)
498
529
  expect(page.urlname).to eq('-au')
499
530
  end
500
531
 
501
532
  it "should generate a three letter urlname from two letter name with umlaut" do
502
- page = FactoryGirl.create(:page, :name => 'Aü', :language => language, :parent_id => language_root.id)
533
+ page = FactoryGirl.create(:page, name: 'Aü', language: language, parent_id: language_root.id)
503
534
  expect(page.urlname).to eq('aue')
504
535
  end
505
536
 
506
537
  it "should generate a three letter urlname from one letter name" do
507
- page = FactoryGirl.create(:page, :name => 'A', :language => language, :parent_id => language_root.id)
538
+ page = FactoryGirl.create(:page, name: 'A', language: language, parent_id: language_root.id)
508
539
  expect(page.urlname).to eq('--a')
509
540
  end
510
541
 
511
542
  it "should add a user stamper" do
512
- page = FactoryGirl.create(:page, :name => 'A', :language => language, :parent_id => language_root.id)
543
+ page = FactoryGirl.create(:page, name: 'A', language: language, parent_id: language_root.id)
513
544
  expect(page.class.stamper_class.to_s).to eq('DummyUser')
514
545
  end
515
546
 
@@ -562,44 +593,44 @@ module Alchemy
562
593
 
563
594
  describe '.language_roots' do
564
595
  it "should return 1 language_root" do
565
- FactoryGirl.create(:public_page, :name => 'First Public Child', :parent_id => language_root.id, :language => language)
596
+ FactoryGirl.create(:public_page, name: 'First Public Child', parent_id: language_root.id, language: language)
566
597
  expect(Page.language_roots.size).to eq(1)
567
598
  end
568
599
  end
569
600
 
570
601
  describe '.layoutpages' do
571
602
  it "should return 1 layoutpage" do
572
- FactoryGirl.create(:public_page, :layoutpage => true, :name => 'Layoutpage', :parent_id => rootpage.id, :language => language)
603
+ FactoryGirl.create(:public_page, layoutpage: true, name: 'Layoutpage', parent_id: rootpage.id, language: language)
573
604
  expect(Page.layoutpages.size).to eq(1)
574
605
  end
575
606
  end
576
607
 
577
608
  describe '.not_locked' do
578
609
  it "should return pages that are not blocked by a user at the moment" do
579
- FactoryGirl.create(:public_page, :locked => true, :name => 'First Public Child', :parent_id => language_root.id, :language => language)
580
- FactoryGirl.create(:public_page, :name => 'Second Public Child', :parent_id => language_root.id, :language => language)
610
+ FactoryGirl.create(:public_page, locked: true, name: 'First Public Child', parent_id: language_root.id, language: language)
611
+ FactoryGirl.create(:public_page, name: 'Second Public Child', parent_id: language_root.id, language: language)
581
612
  expect(Page.not_locked.size).to eq(3)
582
613
  end
583
614
  end
584
615
 
585
616
  describe '.not_restricted' do
586
617
  it "should return 2 accessible pages" do
587
- FactoryGirl.create(:public_page, :name => 'First Public Child', :restricted => true, :parent_id => language_root.id, :language => language)
618
+ FactoryGirl.create(:public_page, name: 'First Public Child', restricted: true, parent_id: language_root.id, language: language)
588
619
  expect(Page.not_restricted.size).to eq(2)
589
620
  end
590
621
  end
591
622
 
592
623
  describe '.public' do
593
624
  it "should return pages that are public" do
594
- FactoryGirl.create(:public_page, :name => 'First Public Child', :parent_id => language_root.id, :language => language)
595
- FactoryGirl.create(:public_page, :name => 'Second Public Child', :parent_id => language_root.id, :language => language)
625
+ FactoryGirl.create(:public_page, name: 'First Public Child', parent_id: language_root.id, language: language)
626
+ FactoryGirl.create(:public_page, name: 'Second Public Child', parent_id: language_root.id, language: language)
596
627
  expect(Page.published.size).to eq(3)
597
628
  end
598
629
  end
599
630
 
600
631
  describe '.restricted' do
601
632
  it "should return 1 restricted page" do
602
- FactoryGirl.create(:public_page, :name => 'First Public Child', :restricted => true, :parent_id => language_root.id, :language => language)
633
+ FactoryGirl.create(:public_page, name: 'First Public Child', restricted: true, parent_id: language_root.id, language: language)
603
634
  expect(Page.restricted.size).to eq(1)
604
635
  end
605
636
  end
@@ -612,7 +643,7 @@ module Alchemy
612
643
 
613
644
  describe '.visible' do
614
645
  it "should return 1 visible page" do
615
- FactoryGirl.create(:public_page, :name => 'First Public Child', :visible => true, :parent_id => language_root.id, :language => language)
646
+ FactoryGirl.create(:public_page, name: 'First Public Child', visible: true, parent_id: language_root.id, language: language)
616
647
  expect(Page.visible.size).to eq(1)
617
648
  end
618
649
  end
@@ -714,7 +745,7 @@ module Alchemy
714
745
 
715
746
  describe '#cell_definitions' do
716
747
  before do
717
- @page = FactoryGirl.build(:page, :page_layout => 'foo')
748
+ @page = FactoryGirl.build(:page, page_layout: 'foo')
718
749
  allow(@page).to receive(:layout_description).and_return({'name' => "foo", 'cells' => ["foo_cell"]})
719
750
  @cell_descriptions = [{'name' => "foo_cell", 'elements' => ["1", "2"]}]
720
751
  allow(Cell).to receive(:definitions).and_return(@cell_descriptions)
@@ -801,7 +832,7 @@ module Alchemy
801
832
  end
802
833
 
803
834
  describe '#elements_grouped_by_cells' do
804
- let(:page) { FactoryGirl.create(:public_page, :do_not_autogenerate => false) }
835
+ let(:page) { FactoryGirl.create(:public_page, do_not_autogenerate: false) }
805
836
 
806
837
  before do
807
838
  allow(PageLayout).to receive(:get).and_return({
@@ -836,8 +867,8 @@ module Alchemy
836
867
 
837
868
  describe '#find_elements' do
838
869
  before do
839
- FactoryGirl.create(:element, :public => false, :page => public_page)
840
- FactoryGirl.create(:element, :public => false, :page => public_page)
870
+ FactoryGirl.create(:element, public: false, page: public_page)
871
+ FactoryGirl.create(:element, public: false, page: public_page)
841
872
  end
842
873
 
843
874
  context "with show_non_public argument TRUE" do
@@ -846,19 +877,19 @@ module Alchemy
846
877
  end
847
878
 
848
879
  it "should only return the elements passed as options[:only]" do
849
- expect(public_page.find_elements({:only => ['article']}, true).to_a).to eq(public_page.elements.named('article').to_a)
880
+ expect(public_page.find_elements({only: ['article']}, true).to_a).to eq(public_page.elements.named('article').to_a)
850
881
  end
851
882
 
852
883
  it "should not return the elements passed as options[:except]" do
853
- expect(public_page.find_elements({:except => ['article']}, true).to_a).to eq(public_page.elements - public_page.elements.named('article').to_a)
884
+ expect(public_page.find_elements({except: ['article']}, true).to_a).to eq(public_page.elements - public_page.elements.named('article').to_a)
854
885
  end
855
886
 
856
887
  it "should return elements offsetted" do
857
- expect(public_page.find_elements({:offset => 2}, true).to_a).to eq(public_page.elements.offset(2))
888
+ expect(public_page.find_elements({offset: 2}, true).to_a).to eq(public_page.elements.offset(2))
858
889
  end
859
890
 
860
891
  it "should return elements limitted in count" do
861
- expect(public_page.find_elements({:count => 1}, true).to_a).to eq(public_page.elements.limit(1))
892
+ expect(public_page.find_elements({count: 1}, true).to_a).to eq(public_page.elements.limit(1))
862
893
  end
863
894
  end
864
895
 
@@ -918,30 +949,30 @@ module Alchemy
918
949
  end
919
950
 
920
951
  it "should only return the public elements passed as options[:only]" do
921
- expect(public_page.find_elements(:only => ['article']).to_a).to eq(public_page.elements.published.named('article').to_a)
952
+ expect(public_page.find_elements(only: ['article']).to_a).to eq(public_page.elements.published.named('article').to_a)
922
953
  end
923
954
 
924
955
  it "should return all public elements except the ones passed as options[:except]" do
925
- expect(public_page.find_elements(:except => ['article']).to_a).to eq(public_page.elements.published.to_a - public_page.elements.published.named('article').to_a)
956
+ expect(public_page.find_elements(except: ['article']).to_a).to eq(public_page.elements.published.to_a - public_page.elements.published.named('article').to_a)
926
957
  end
927
958
 
928
959
  it "should return elements offsetted" do
929
- expect(public_page.find_elements({:offset => 2}).to_a).to eq(public_page.elements.published.offset(2))
960
+ expect(public_page.find_elements({offset: 2}).to_a).to eq(public_page.elements.published.offset(2))
930
961
  end
931
962
 
932
963
  it "should return elements limitted in count" do
933
- expect(public_page.find_elements({:count => 1}).to_a).to eq(public_page.elements.published.limit(1))
964
+ expect(public_page.find_elements({count: 1}).to_a).to eq(public_page.elements.published.limit(1))
934
965
  end
935
966
  end
936
967
  end
937
968
 
938
969
  describe '#first_public_child' do
939
970
  before do
940
- FactoryGirl.create(:page, :name => "First child", :language => language, :public => false, :parent_id => language_root.id)
971
+ FactoryGirl.create(:page, name: "First child", language: language, public: false, parent_id: language_root.id)
941
972
  end
942
973
 
943
974
  it "should return first_public_child" do
944
- first_public_child = FactoryGirl.create(:public_page, :name => "First public child", :language => language, :parent_id => language_root.id)
975
+ first_public_child = FactoryGirl.create(:public_page, name: "First public child", language: language, parent_id: language_root.id)
945
976
  expect(language_root.first_public_child).to eq(first_public_child)
946
977
  end
947
978
 
@@ -1338,7 +1369,7 @@ module Alchemy
1338
1369
  describe "#update_node!" do
1339
1370
 
1340
1371
  let(:original_url) { "sample-url" }
1341
- let(:page) { FactoryGirl.create(:page, :language => language, :parent_id => language_root.id, :urlname => original_url, restricted: false) }
1372
+ let(:page) { FactoryGirl.create(:page, language: language, parent_id: language_root.id, urlname: original_url, restricted: false) }
1342
1373
  let(:node) { TreeNode.new(10, 11, 12, 13, "another-url", true) }
1343
1374
 
1344
1375
  context "when nesting is enabled" do
@@ -1552,22 +1583,82 @@ module Alchemy
1552
1583
  it "returns the user that created the page" do
1553
1584
  expect(page.creator).to eq(user)
1554
1585
  end
1586
+
1587
+ context 'with user class having a different primary key' do
1588
+ before do
1589
+ allow(Alchemy.user_class)
1590
+ .to receive(:primary_key)
1591
+ .and_return('user_id')
1592
+
1593
+ allow(page)
1594
+ .to receive(:creator_id)
1595
+ .and_return(1)
1596
+ end
1597
+
1598
+ it "returns the user that created the page" do
1599
+ expect(Alchemy.user_class)
1600
+ .to receive(:find_by)
1601
+ .with({'user_id' => 1})
1602
+
1603
+ page.creator
1604
+ end
1605
+ end
1555
1606
  end
1556
1607
 
1557
1608
  describe '#updater' do
1558
1609
  before { page.update(updater_id: user.id) }
1559
1610
 
1560
- it "returns the user that created the page" do
1611
+ it "returns the user that updated the page" do
1561
1612
  expect(page.updater).to eq(user)
1562
1613
  end
1614
+
1615
+ context 'with user class having a different primary key' do
1616
+ before do
1617
+ allow(Alchemy.user_class)
1618
+ .to receive(:primary_key)
1619
+ .and_return('user_id')
1620
+
1621
+ allow(page)
1622
+ .to receive(:updater_id)
1623
+ .and_return(1)
1624
+ end
1625
+
1626
+ it "returns the user that updated the page" do
1627
+ expect(Alchemy.user_class)
1628
+ .to receive(:find_by)
1629
+ .with({'user_id' => 1})
1630
+
1631
+ page.updater
1632
+ end
1633
+ end
1563
1634
  end
1564
1635
 
1565
1636
  describe '#locker' do
1566
1637
  before { page.update(locked_by: user.id) }
1567
1638
 
1568
- it "returns the user that created the page" do
1639
+ it "returns the user that locked the page" do
1569
1640
  expect(page.locker).to eq(user)
1570
1641
  end
1642
+
1643
+ context 'with user class having a different primary key' do
1644
+ before do
1645
+ allow(Alchemy.user_class)
1646
+ .to receive(:primary_key)
1647
+ .and_return('user_id')
1648
+
1649
+ allow(page)
1650
+ .to receive(:locked_by)
1651
+ .and_return(1)
1652
+ end
1653
+
1654
+ it "returns the user that locked the page" do
1655
+ expect(Alchemy.user_class)
1656
+ .to receive(:find_by)
1657
+ .with({'user_id' => 1})
1658
+
1659
+ page.locker
1660
+ end
1661
+ end
1571
1662
  end
1572
1663
 
1573
1664
  context 'with user that can not be found' do
@@ -43,9 +43,6 @@ Capybara.default_selector = :css
43
43
  Capybara.register_driver :poltergeist do |app|
44
44
  Capybara::Poltergeist::Driver.new(app)
45
45
  end
46
- Capybara.register_driver(:rack_test_translated_header) do |app|
47
- Capybara::RackTest::Driver.new(app, headers: { 'HTTP_ACCEPT_LANGUAGE' => 'de' })
48
- end
49
46
  Capybara.javascript_driver = :poltergeist
50
47
  Capybara.ignore_hidden_elements = false
51
48