File: export_csv_shared_examples.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (37 lines) | stat: -rw-r--r-- 1,181 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# frozen_string_literal: true

RSpec.shared_examples 'export csv email' do |collection_type|
  include_context 'gitlab email notification'

  it 'attachment has csv mime type' do
    expect(attachment.mime_type).to eq 'text/csv'
  end

  it 'generates a useful filename' do
    expect(attachment.filename).to include(Date.today.year.to_s)
    expect(attachment.filename).to include(collection_type)
    expect(attachment.filename).to include('myproject')
    expect(attachment.filename).to end_with('.csv')
  end

  it 'mentions number of objects and project name' do
    expect(subject).to have_content '3'
    expect(subject).to have_content empty_project.name
  end

  it "doesn't need to mention truncation by default" do
    expect(subject).not_to have_content 'truncated'
  end

  context 'when truncated' do
    let(:export_status) { { truncated: true, rows_expected: 12, rows_written: 10 } }

    it 'mentions that the csv has been truncated' do
      expect(subject).to have_content 'truncated'
    end

    it 'mentions the number of objects written and expected' do
      expect(subject).to have_content "10 of 12 #{collection_type.humanize.downcase}"
    end
  end
end