alchemy_cms 3.1.0.rc1 → 3.1.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
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