class NarouAgent::Actions::UpdatePart

Public Instance Methods

run(ncode, part_id, subtitle, body, date = nil) click to toggle source
# File lib/narou_agent/actions/update_part.rb, line 4
      def run(ncode, part_id, subtitle, body, date = nil)
        driver.get(edit_part_url(ncode, part_id))

        driver.find_element(name: 'subtitle').tap do |subtitle_input|
          subtitle_input.clear
          subtitle_input.send_keys(subtitle)
        end
        driver.find_element(name: 'novel').tap do |novel_textarea|
          novel_textarea.clear
          novel_textarea.send_keys(body)
        end

        if !date.nil? && date > Time.now
          driver.script <<~JAVASCRIPT
            $('.hasDatepicker').datepicker('setDate', new Date('#{date.strftime('%F')}'));
          JAVASCRIPT
          Selenium::WebDriver::Support::Select.new(driver.find_element(:name, 'hour')).select_by(:value, date.hour.to_s)
        end

        driver.find_element(css: '#novelmanage[value="編集[確認]"]').click
        driver.find_element(css: '#novelmanage[value="編集[実行]"]').click

        driver.find_element(xpath: '//h2[text()="投稿済み小説編集[完了]"]')

        part_url(ncode, part_id)
      rescue Selenium::WebDriver::Error::WebDriverError => e
        raise ActionFailedError.new(e)
      end