|
1 | | -require 'pry' |
| 1 | +require "features/shared/authentication_error" |
| 2 | +require "features/shared/authorization_error" |
2 | 3 |
|
3 | 4 | describe "Media Stores", type: :feature do |
| 5 | + let!(:database_store) { create(:media_store, :database) } |
| 6 | + let!(:filesystem_store) { create(:media_store, :filesystem) } |
| 7 | + let(:path) { "/media-service/stores/" } |
4 | 8 |
|
5 | | - # TODO user creation seems to be missing |
6 | | - |
7 | | - let(:session_cookie_value) do |
8 | | - MadekOpenSession.build_session_value(User.find_by(login: 'adam')) |
9 | | - end |
| 9 | + context "for public" do |
| 10 | + before do |
| 11 | + visit path |
| 12 | + end |
10 | 13 |
|
11 | | - before do |
12 | | - visit "/" |
13 | | - expect(page).to have_content "You are not singed in!" |
| 14 | + it "doesn't display user's dropdown in navbar" do |
| 15 | + expect(page).not_to have_css('.navbar a.dropdown-toggle') |
| 16 | + end |
14 | 17 |
|
15 | | - # page.driver.browser.manage.add_cookie(name: "madek-session", value: cookie_value) |
16 | | - Capybara.current_session.driver.browser.manage.add_cookie( |
17 | | - name: "madek-session", |
18 | | - value: session_cookie_value |
19 | | - ) |
| 18 | + it_displays "authentication error" |
| 19 | + it_displays "authorization error" |
20 | 20 | end |
21 | 21 |
|
22 | | - it "displays it ;)" do |
23 | | - visit '/media-service/' |
| 22 | + context "for an ordinary user" do |
| 23 | + let(:user) { create(:user) } |
24 | 24 |
|
25 | | - find('.navbar .dropdown-toggle').click |
26 | | - click_link 'Media-Stores' |
| 25 | + before { sign_in } |
27 | 26 |
|
28 | | - expect(page).to have_css('h2', text: 'Media-Stores') |
29 | | - |
30 | | - within '#stores-page' do |
31 | | - expect(page).to have_css('table') |
32 | | - within 'table' do |
33 | | - expect(page).to have_css('tr', text: 'legacy-file-store filesystem') |
34 | | - expect(page).to have_css('tr', text: 'database database') |
35 | | - end |
36 | | - end |
| 27 | + it_displays "authorization error" |
37 | 28 | end |
38 | 29 |
|
39 | | - it "navigates to store users page" do |
40 | | - visit "/media-service/stores/" |
| 30 | + context "for an user with admin role" do |
| 31 | + let(:user) { create(:user, :with_admin_role) } |
41 | 32 |
|
42 | | - click_link href: '/media-service/stores/legacy-file-store/users/' |
| 33 | + before { sign_in } |
43 | 34 |
|
44 | | - expect(page).to have_css('h2', text: 'Media-Store legacy-file-store Users') |
| 35 | + it_displays "authorization error" |
| 36 | + end |
45 | 37 |
|
46 | | - page.assert_selector('table.users tbody tr', minimum: 5) |
| 38 | + context "for an user with system admin role" do |
| 39 | + let(:user) { create(:user, :with_system_admin_role) } |
47 | 40 |
|
48 | | - fill_in 'term', with: 'ada' |
| 41 | + before do |
| 42 | + sign_in |
49 | 43 |
|
50 | | - expect(page).to have_css('table.users tbody tr', count: 1) |
| 44 | + visit path |
| 45 | + end |
51 | 46 |
|
52 | | - within '.direct-priority-component' do |
53 | | - expect(page).to have_content '-' |
| 47 | + it "is navigable" do |
| 48 | + within first(".navbar") do |
| 49 | + find(".dropdown-toggle").click |
| 50 | + click_link "Media-Stores" |
| 51 | + end |
54 | 52 |
|
55 | | - click_button 'Edit' |
56 | | - end |
| 53 | + expect(current_path).to eq("/media-service/stores/") |
| 54 | + expect(page).to have_css("h2", text: "Media-Stores") |
57 | 55 |
|
58 | | - expect(page).to have_css('.modal') |
59 | | - fill_in 'direct_priority', with: 5 |
| 56 | + within '#stores-page' do |
| 57 | + expect(page).to have_css('table') |
| 58 | + within 'table' do |
| 59 | + expect(page).to have_css('tr', text: 'legacy-file-store filesystem') |
| 60 | + expect(page).to have_css('tr', text: 'database database') |
| 61 | + end |
| 62 | + end |
| 63 | + end |
60 | 64 |
|
61 | | - within('.modal') { click_button 'Save' } |
| 65 | + specify "page has links to users" do |
| 66 | + expect(page).to have_link("0", href: "/media-service/stores/legacy-file-store/users/") |
| 67 | + expect(page).to have_link("0", href: "/media-service/stores/database/users/") |
| 68 | + end |
62 | 69 |
|
63 | | - expect(page).to have_css('table.users tbody tr', count: 1) |
64 | | - within '.combined-priority-component' do |
65 | | - expect(page).to have_content '5' |
| 70 | + specify "page has links to groups" do |
| 71 | + expect(page).to have_link("0", href: "/media-service/stores/legacy-file-store/groups/") |
| 72 | + expect(page).to have_link("0", href: "/media-service/stores/database/groups/") |
66 | 73 | end |
67 | 74 | end |
68 | 75 | end |
0 commit comments