class FileFieldContext < CmsContext
  def initialize
    super
    @partials = [{'name' => 'File Field Partial', 'devs_only' => 'false'}]
  end

  def upload_file
    expand_page_partial('.page-partial')
    click_a_tag('Upload File')
    wait_until { !Upload.last.nil? }
    @file_url = Upload.last.url
  end

  def expect_correct_file_url
    within('.instance-fields') do
      expect(find('input.file-upload-field')[:value]).to eq(@file_url)
    end
  end

  def expect_no_file
    within('.instance-fields') do
      expect(find('input.file-upload-field')[:value]).to eq("No File")
    end
  end

  def given_a_file(field_name)
    file = create_file('page_partial')
    partial_field = PartialField.find_by(name: field_name, field_type: 'file')
    file_field = PagePartialField.find_by(partial_field_id: partial_field.id)
    file_field.update!(value: file.id)
  end

  def remove_file
    expand_page_partial('.page-partial')
    click_and_wait("Remove File")
    @file_url = ''
  end

  private

  def get_partial_fields
    {
      'File Field Partial' => {
        'file' => {
          'field_names' => ['File'],
          'char_limit' => '0',
          'mandatory' => 'false'
        },
      }
    }
  end
end
