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.
- checksums.yaml +4 -4
- data/.gitignore +4 -10
- data/.teatro.yml +7 -0
- data/Gemfile +13 -13
- data/README.md +20 -3
- data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +3 -3
- data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +5 -0
- data/app/controllers/alchemy/admin/essence_files_controller.rb +23 -3
- data/app/controllers/alchemy/admin/essence_pictures_controller.rb +7 -2
- data/app/controllers/alchemy/admin/pictures_controller.rb +1 -4
- data/app/controllers/alchemy/base_controller.rb +3 -1
- data/app/controllers/alchemy/pages_controller.rb +3 -1
- data/app/models/alchemy/content.rb +0 -3
- data/app/models/alchemy/element.rb +1 -2
- data/app/models/alchemy/page/page_scopes.rb +3 -1
- data/app/models/alchemy/page/page_users.rb +10 -3
- data/app/models/alchemy/picture.rb +29 -6
- data/app/models/alchemy/picture/transformations.rb +14 -7
- data/app/views/alchemy/_menubar.html.erb +1 -1
- data/app/views/alchemy/admin/leave.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +2 -1
- data/config/initializers/dragonfly.rb +0 -2
- data/lib/alchemy/engine.rb +0 -1
- data/lib/alchemy/locale.rb +15 -13
- data/lib/alchemy/upgrader.rb +1 -0
- data/lib/alchemy/upgrader/three_point_zero.rb +27 -9
- data/lib/alchemy/version.rb +1 -1
- data/lib/tasks/alchemy/tidy.rake +34 -16
- data/spec/controllers/admin/essence_files_controller_spec.rb +13 -2
- data/spec/controllers/admin/essence_pictures_controller_spec.rb +8 -0
- data/spec/controllers/pages_controller_spec.rb +42 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -1
- data/spec/dummy/app/models/dummy_user.rb +4 -0
- data/spec/dummy/bin/bundle +0 -0
- data/spec/dummy/bin/rails +0 -0
- data/spec/dummy/bin/rake +0 -0
- data/spec/dummy/config/environments/production.rb +1 -1
- data/spec/dummy/db/seeds.rb +1 -0
- data/spec/features/translation_integration_spec.rb +14 -11
- data/spec/models/page_spec.rb +143 -52
- data/spec/spec_helper.rb +0 -3
- data/spec/support/transformation_examples.rb +7 -0
- data/spec/views/essences/essence_boolean_editor_spec.rb +1 -0
- data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +6 -3
- data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +5 -3
- data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +97 -46
- data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +11 -4
- metadata +6 -4
- data/lib/extensions/action_view.rb +0 -17
data/spec/models/page_spec.rb
CHANGED
@@ -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, :
|
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, :
|
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, :
|
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, :
|
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, :
|
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(:
|
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, :
|
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(:
|
290
|
-
@new_page = FactoryGirl.create(:page, :
|
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, :
|
349
|
-
page_2 = FactoryGirl.create(: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, :
|
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, :
|
371
|
-
page_2 = FactoryGirl.create(:page, :
|
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, :
|
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, :
|
392
|
-
@klingonian_lang_root = FactoryGirl.create(:language_root_page, :
|
393
|
-
@contentpage = FactoryGirl.create(:public_page, :
|
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, :
|
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, {:
|
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, :
|
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, :
|
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, :
|
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, :
|
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, :
|
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, :
|
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, :
|
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, :
|
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, :
|
580
|
-
FactoryGirl.create(:public_page, :
|
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, :
|
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, :
|
595
|
-
FactoryGirl.create(:public_page, :
|
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, :
|
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, :
|
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, :
|
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, :
|
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, :
|
840
|
-
FactoryGirl.create(:element, :
|
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({:
|
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({:
|
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({:
|
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({:
|
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(:
|
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(:
|
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({:
|
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({:
|
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, :
|
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, :
|
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, :
|
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
|
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
|
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
|
data/spec/spec_helper.rb
CHANGED
@@ -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
|
|