@collections
Feature: Collection
  In order to have an archive full of collections
  As a humble user
  I want to create a collection and post to it

Scenario: Create a collection

  Given I am logged in as "first_user"
  When I go to the collections page
  Then I should see "Collections in the "
    And I should not see "My Collection Thing"
  When I follow "New Collection"
    And I fill in "Display title" with "My Collection Thing"
    And I fill in "Collection name" with "collection_thing"
    And I fill in "Introduction" with "Welcome to the collection"
    And I fill in "FAQ" with "<dl><dt>What is this thing?</dt><dd>It's a collection</dd></dl>"
    And I fill in "Rules" with "Be nice to people"
    And I check all the collection settings checkboxes
    And I submit
  Then I should see "Collection was successfully created"
  When I follow "Profile"
  Then I should see "Welcome to the collection" within "#intro"
    And I should see "What is this thing?" within "#faq"
    And I should see "It's a collection" within "#faq"
    And I should see "Be nice to people" within "#rules"
  When I follow "Collection Settings"
    And I fill in "Collection name" with " "
    And I submit
    And I should see "Please enter a name for your collection"
  When I fill in "Collection name" with "collection_thing2"
    And I submit
    And I should see "Collection was successfully updated"
    And the name of the collection "My Collection Thing" should be "collection_thing2"

Scenario: Post to collection from the work edit page
  Given the collection "My Collection Thing" with name "collection_thing"
    And I am logged in as "first_user"
  When I post the work "collect-y work"
    And I go to first_user's user page
  Then I should see "collect-y work"
  When I edit the work "collect-y work"
    And I fill in "work_collection_names" with "collection_thing"
    And I press "Preview"
    And I press "Update"
  Then I should see "collect-y work"
    And I should see "Collections: My Collection Thing"

Scenario: Post to collection from the collection home page

  Given I have the collection "My Collection Thing" with name "collection_thing"
    And basic tags
    And I am logged in as "first_user"
  When I go to the collections page
    And I follow "My Collection Thing"
    And I follow "Post to Collection"
  Then I should see "Post New Work"
    And I should see "collection_thing" in the "Post to Collections / Challenges" input
  When I fill in the basic work information for "My Collected Work"
    And I press "Preview"
  Then I should see "My Collection Thing" within "dd.collections"
  When I press "Post"
  Then I should see "My Collected Work"
    And I should see "Collections: My Collection Thing"

Scenario: Create a subcollection

  Given I am logged in as "first_user"
    And I create the collection "My Collection Thing" with name "collection_thing"
  When I go to the collections page
    And I follow "New Collection"
    And I fill in "collection_parent_name" with "collection_thing"
    And I fill in "Display title" with "My SubCollection"
    And I fill in "Collection name" with "subcollection_thing"
    And I submit
  Then I should see "Collection was successfully created"

Scenario: Fill out new collection form with faulty data

   Given I am logged in as a random user
   And I am on the collections page

   When I follow "New Collection"
   And I fill in the following:
   | Collection name                 | faulty name         |
   | Display title                   | Awesome Collection  |
   | Collection email                | fangirl@example.org |
   | Brief description               | My Description      |
   | Introduction                    | My Introduction     |
   | FAQ                             | My FAQ              |
   | Rules                           | My Rules            |
   | Assignment notification message | My Message          |
   | Gift notification message       | My Other Message    |

   And I check "This collection is closed"
   And I select "Gift Exchange" from "Type of challenge, if any"
   And I submit

   Then I should see a save error message
   And I should see "faulty name" in the "Collection name" input
   And I should see "Awesome Collection" in the "Display title" input
   And I should see "fangirl@example.org" in the "Collection email" input
   And I should see "My Description" in the "Brief description" input
   And I should see "My Introduction" in the "Introduction" input
   And I should see "My FAQ" in the "FAQ" input
   And I should see "My Rules" in the "Rules" input
   And I should see "My Message" in the "Assignment notification message" input
   And I should see "My Other Message" in the "Gift notification message" input
   And the "This collection is closed" checkbox should not be disabled
   And "Gift Exchange" should be selected within "Type of challenge, if any"

Scenario: Create a collection with a malformed header URL

Given I have the collection "Scotts Collection" with name "scotts_collection"
  And I am logged in as "moderator"
  And I am on "Scotts Collection" collection's page
  And I follow "Collection Settings"
  And I fill in "collection_header_image_url" with "fc00.deviantart.net/fs13/f/2007/004/a/7/Flooded_by_bingeling.jpg"
  And I press "Update"
  And I should see "Collection was successfully updated"

  Scenario: Update a collection with a HTTPS header URL

  Given I have the collection "Scotts Collection" with name "scotts_collection"
  When I am logged in as "moderator"
    And I am on "Scotts Collection" collection's page
    And I follow "Collection Settings"
    And I fill in "Custom header URL" with "https://example.com/image.png"
    And I press "Update"
  Then I should see "Collection was successfully updated"
  When I follow "Collection Settings"
  Then I should see "https://example.com/image.png" in the "Custom header URL" input

  Scenario: Delete a subcollection and then its parent collection

  Given I am logged in as "collector"
    And I create the collection "Temporary Top" with name "temporary_top_collection"
  When I go to the collections page
    And I follow "New Collection"
    And I fill in "collection_parent_name" with "temporary_top_collection"
    And I fill in "Display title" with "Temporary Subcollection"
    And I fill in "Collection name" with "temporary_subcollection"
    And I press "Submit"
  Then I should see "Collection was successfully created"
  When I follow "Collection Settings"
    And I follow "Delete Collection"
    And I press "Yes, Delete Collection"
  Then I should see "Collection was successfully deleted."
    And I should see "Temporary Top"
  When I follow "Temporary Top"
    And I follow "Collection Settings"
  When I follow "Delete Collection"
    And I press "Yes, Delete Collection"
  Then I should see "Collection was successfully deleted."
    And I should not see "Temporary Top"

  Scenario: Delete a collection that has subcollections

  Given I am logged in as "collector"
    And I create the collection "Parent" with name "parent_collection"
  When I go to the collections page
    And I follow "New Collection"
    And I fill in "collection_parent_name" with "parent_collection"
    And I fill in "Display title" with "Child"
    And I fill in "Collection name" with "child_collection"
    And I press "Submit"
  Then I should see "Collection was successfully created"
  When I go to the collections page
    And I follow "Parent"
    And I follow "Collection Settings"
  When I follow "Delete Collection"
    And I press "Yes, Delete Collection"
  Then I should see "Collection was successfully deleted."
    And I should not see "Parent"

  Scenario: Moderator cannot list one collection's subcollection as another
  collection's parent

  Given I am logged in as "collector"
    And I add the subcollection "Subcollection" to the parent collection named "parent_collection"
  When I go to the new collection page 
    And I fill in "Parent collection (that you maintain)" with "subcollection"
    And I fill in "Display title" with "Sub-Subcollection"
    And I fill in "Collection name" with "sub_subcollection"
    And I press "Submit"
  Then I should see "Sorry, but Subcollection is a subcollection, so it can't also be a parent collection."

  Scenario: Moderator cannot specify a parent collection that does not exist

  Given I am logged in
  When I go to the new collection page 
    And I fill in "Parent collection (that you maintain)" with "nonexistent_collection"
    And I fill in "Display title" with "Collection"
    And I fill in "Collection name" with "Collection"
    And I press "Submit"
  Then I should see "We couldn't find a collection with name nonexistent_collection."

  Scenario: Moderator cannot make a collection its own parent

  Given I am logged in
    And I create the collection "Collection" with name "collection"
  When I go to "Collection" collection edit page
    And I fill in "Parent collection (that you maintain)" with "collection"
    And I press "Update"
  Then I should see "You can't make a collection its own parent."

  Scenario: Moderator cannot list a parent collection they do not own

  Given I am logged in as "collector"
    And I create the collection "Collection" with name "collection"
  When I am logged in as "other_collector"
    And I go to the new collection page
    And I fill in "Display title" with "Other Collection"
    And I fill in "Collection name" with "other_collection"
    And I fill in "Parent collection (that you maintain)" with "collection"
    And I press "Submit"
  Then I should see "You have to be a maintainer of collection to make a subcollection."

  Scenario: Collection display title can't contain commas

  Given I am logged in
    And I am on the new collection page
  When I fill in "Display title" with "Hey, You"
    And I fill in "Collection name" with "hey_you"
    And I press "Submit"
  Then I should see "Sorry, the ',' character cannot be in a collection Display Title."
