Given(/^I have (single track split|multiple track splits) to apply$/) do |splits|
  case splits
  when "single track split"
    @splits = [{ "isrc" => "USBKY0520861", "split_rate" => "8.00" }]
  when "multiple track splits"
    @splits = [{ "isrc" => "USBKY0520861", "split_rate" => "8.00" },
               { "isrc" => "USBKY0531414", "split_rate" => "9.00" }]
  end
end

When(/^I am on the Contract::TrackArrangement for contract (.*) with (.*)$/) do |int, split_presence|
  visit(Contract::TrackArrangement, using_params: { queries: { "id" => int } }) do |page|
    page.clickable_table_element.when_present
    case split_presence
    when "no splits"
      step "I should be able to delete all track splits"
    when "a split"
      step "I should be able to delete all track splits"
      step "I have single track split to apply"
      step "I should be able to add track splits"
    end
  end
end

Then(/^I should be able to add track splits$/) do
  on(Contract::TrackArrangement) do |page|
    @splits.each do |split|
      page.add_split(split["isrc"], split["split_rate"])
      expect(page.success_message?).to be true
      expect(page.success_message_element.text).to eq(
        "Tracks arrangement data saved Successfully"
      ).or(
        eq("Tracks arrangement data updated Successfully")
      )
      page.refresh
      expect(page.clickable_table_element[1].text).to include split["isrc"]
      expect(page.split_element.value).to eq split["split_rate"]
    end
  end
end

Then(/^I should be able to delete all track splits$/) do
  on(Contract::TrackArrangement) do |page|
    page.delete_all_splits
    page.no_tracks_message_element.when_present(120)
    expect(page.no_tracks_message?).to be true
  end
end

Then("I should be able to update a track split") do
  split_value_for_update = "15.00"

  on(Contract::TrackArrangement) do |page|
    page.split_element.clear
    page.track_level_split_element.click
    page.split_with_validation_error_element.send_keys split_value_for_update
    page.submit
    expect(page.success_message_element.text).to eq("Tracks arrangement data saved Successfully")
    page.refresh
    expect(page.split_element.value).to eq split_value_for_update
  end
end
