Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Organization browser test #2306

Merged
merged 7 commits into from Sep 9, 2020
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/cljs/rems/administration/create_organization.cljs
Expand Up @@ -235,10 +235,10 @@
(for [[field-index _review-email] (indexed (:organization/review-emails form))]
^{:key field-index} [organization-review-email-field field-index])
[:div.dashed-group.text-center
[:a.add-form-field {:href "#"
:on-click (fn [event]
(.preventDefault event)
(rf/dispatch [::add-review-email]))}
[:a#add-review-email {:href "#"
:on-click (fn [event]
(.preventDefault event)
(rf/dispatch [::add-review-email]))}
(text :t.administration/add)]]]))

(defn create-organization-page []
Expand Down
3 changes: 2 additions & 1 deletion src/cljs/rems/administration/organization.cljs
Expand Up @@ -36,7 +36,8 @@
(rf/reg-sub ::loading? (fn [db _] (::loading? db)))

(defn edit-button [id]
[atoms/link {:class "btn btn-primary edit-organization"}
[atoms/link {:id "edit-organization"
:class "btn btn-primary"}
(str "/administration/organizations/edit/" id)
(text :t.administration/edit)])

Expand Down
7 changes: 5 additions & 2 deletions src/cljs/rems/administration/organizations.cljs
Expand Up @@ -77,7 +77,8 @@
(fn [[organizations language] _]
(for [organization organizations]
{:key (:organization/id organization)
:name {:value (get-in organization [:organization/short-name language])}
:short-name {:value (get-in organization [:organization/short-name language])}
:name {:value (get-in organization [:organization/name language])}
:active (let [checked? (status-flags/active? organization)]
{:td [:td.active
[readonly-checkbox {:value checked?}]]
Expand All @@ -90,7 +91,9 @@

(defn- organizations-list []
(let [organizations-table {:id ::organizations
:columns [{:key :name
:columns [{:key :short-name
:title (text :t.administration/short-name)}
{:key :name
:title (text :t.administration/organization)}
{:key :active
:title (text :t.administration/active)
Expand Down
2 changes: 2 additions & 0 deletions test/clj/rems/browser_test_util.clj
Expand Up @@ -163,6 +163,8 @@
(def has-text? (wrap-etaoin et/has-text?))
(def has-class? (wrap-etaoin et/has-class?))
(def disabled? (wrap-etaoin et/disabled?))
(def clear (wrap-etaoin et/clear))
(def clear-el (wrap-etaoin et/clear-el))
;; TODO add more of etaoin here


Expand Down
142 changes: 142 additions & 0 deletions test/clj/rems/test_browser.clj
Expand Up @@ -15,6 +15,7 @@
[com.rpl.specter :refer [select ALL]]
[rems.browser-test-util :as btu]
[rems.config]
[rems.db.organizations :as organizations]
[rems.db.test-data :as test-data]
[rems.db.user-settings :as user-settings]
[rems.db.users :as users]
Expand Down Expand Up @@ -931,3 +932,144 @@
first
slurp
str/split-lines)))))))

(deftest test-organizations
(btu/with-postmortem {:dir btu/reporting-dir}
(login-as "owner")
(go-to-admin "Organizations")

(testing "create"
(btu/scroll-and-click :create-organization)
(btu/context-assoc! :organization-id (str "Organization id " (btu/get-seed)))
(btu/context-assoc! :organization-name (str "Organization " (btu/get-seed)))
(btu/wait-page-loaded)
(btu/fill-human :id (btu/context-get :organization-id))
(btu/fill-human :short-name-en "SNEN")
(btu/fill-human :short-name-fi "SNFI")
(btu/fill-human :short-name-sv "SNSV")
(btu/fill-human :name-en (str (btu/context-get :organization-name) " EN"))
(btu/fill-human :name-fi (str (btu/context-get :organization-name) " FI"))
(btu/fill-human :name-sv (str (btu/context-get :organization-name) " SV"))
(select-option* "Owners" "Organization owner 1")
(btu/scroll-and-click :add-review-email)
(btu/scroll-and-click :add-review-email)
(btu/fill-human :review-emails-1-name-en "Review mail EN") ; fill second
(btu/fill-human :review-emails-1-name-fi "Review mail FI")
(btu/fill-human :review-emails-1-name-sv "Review mail SV")
(btu/fill-human :review-emails-1-email "review.email@example.com")
(btu/scroll-and-click {:css ".remove"}) ; remove first
(btu/scroll-and-click :save)
(btu/wait-visible {:css ".alert-success"})
(is (str/includes? (btu/get-element-text {:css ".alert-success"}) "Success")))

(testing "view after creation"
(let [last-modified (text/localize-time (:organization/last-modified (organizations/getx-organization-by-id (btu/context-get :organization-id))))]
(is (= {"Id" (btu/context-get :organization-id)
"Short name (FI)" "SNFI"
"Short name (EN)" "SNEN"
"Short name (SV)" "SNSV"
"Title (EN)" (str (btu/context-get :organization-name) " EN")
"Title (FI)" (str (btu/context-get :organization-name) " FI")
"Title (SV)" (str (btu/context-get :organization-name) " SV")
"Owners" "organization-owner1"
"Name (FI)" "Review mail FI"
"Name (SV)" "Review mail SV"
"Name (EN)" "Review mail EN"
"Email" "review.email@example.com"
"Active" ""
"Last modified" last-modified
"Modifier" "owner"}
(slurp-fields :organization)))))

(testing "edit after creation"
(btu/scroll-and-click :edit-organization)
(btu/wait-page-loaded)
(select-option* "Owners" "Organization owner 2")
(btu/clear :short-name-en)
(btu/fill-human :short-name-en "SNEN2")
(btu/clear :short-name-fi)
(btu/fill-human :short-name-fi "SNFI2")
(btu/clear :short-name-sv)
(btu/fill-human :short-name-sv "SNSV2")
(btu/scroll-and-click :save)
(let [last-modified (text/localize-time (:organization/last-modified (organizations/getx-organization-by-id (btu/context-get :organization-id))))]
(is (= {"Id" (btu/context-get :organization-id)
"Short name (FI)" "SNFI2"
"Short name (EN)" "SNEN2"
"Short name (SV)" "SNSV2"
"Title (EN)" (str (btu/context-get :organization-name) " EN")
"Title (FI)" (str (btu/context-get :organization-name) " FI")
"Title (SV)" (str (btu/context-get :organization-name) " SV")
"Owners" "organization-owner1\norganization-owner2"
"Name (FI)" "Review mail FI"
"Name (SV)" "Review mail SV"
"Name (EN)" "Review mail EN"
"Email" "review.email@example.com"
"Active" ""
"Last modified" last-modified
"Modifier" "owner"}
(slurp-fields :organization)))))

(testing "as organization owner"
(logout)
(login-as "organization-owner2")
(go-to-admin "Organizations")

(testing "list shows created organization"
(let [orgs (slurp-rows :organizations)]
(is (some #{{"short-name" "SNEN2"
"name" (str (btu/context-get :organization-name) " EN")
"active" ""
"commands" "ViewDisableArchive"}}
orgs))))

(testing "view from list"
(click-row-action [:organizations]
{:fn/text (str (btu/context-get :organization-name) " EN")}
(select-button-by-label "View"))
(let [last-modified (text/localize-time (:organization/last-modified (organizations/getx-organization-by-id (btu/context-get :organization-id))))]
(is (= {"Id" (btu/context-get :organization-id)
"Short name (FI)" "SNFI2"
"Short name (EN)" "SNEN2"
"Short name (SV)" "SNSV2"
"Title (EN)" (str (btu/context-get :organization-name) " EN")
"Title (FI)" (str (btu/context-get :organization-name) " FI")
"Title (SV)" (str (btu/context-get :organization-name) " SV")
"Owners" "organization-owner1\norganization-owner2"
"Name (FI)" "Review mail FI"
"Name (SV)" "Review mail SV"
"Name (EN)" "Review mail EN"
"Email" "review.email@example.com"
"Active" ""
"Last modified" last-modified
"Modifier" "owner"}
(slurp-fields :organization)))))

(testing "edit as organization owner"
(btu/scroll-and-click :edit-organization)
(btu/clear :short-name-en)
(btu/fill-human :short-name-en "SNEN")
(btu/clear :short-name-fi)
(btu/fill-human :short-name-fi "SNFI")
(btu/clear :short-name-sv)
(btu/fill-human :short-name-sv "SNSV")
(btu/scroll-and-click :save)
(btu/wait-visible {:css ".alert-success"})
(is (str/includes? (btu/get-element-text {:css ".alert-success"}) "Success"))
(let [last-modified (text/localize-time (:organization/last-modified (organizations/getx-organization-by-id (btu/context-get :organization-id))))]
(is (= {"Id" (btu/context-get :organization-id)
"Short name (FI)" "SNFI"
"Short name (EN)" "SNEN"
"Short name (SV)" "SNSV"
"Title (EN)" (str (btu/context-get :organization-name) " EN")
"Title (FI)" (str (btu/context-get :organization-name) " FI")
"Title (SV)" (str (btu/context-get :organization-name) " SV")
"Owners" "organization-owner1\norganization-owner2"
"Name (FI)" "Review mail FI"
"Name (SV)" "Review mail SV"
"Name (EN)" "Review mail EN"
"Email" "review.email@example.com"
"Active" ""
"Last modified" last-modified
"Modifier" "organization-owner1"}
(slurp-fields :organization))))))))