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