summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/fogbugz_import/importer_spec.rb
blob: 9e67047eeda4a03a6438dcd737911629876808fd (plain)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# frozen_string_literal: true

require 'spec_helper'

describe Gitlab::FogbugzImport::Importer do
  let(:project) { create(:project_empty_repo) }
  let(:importer) { described_class.new(project) }
  let(:repo) do
    instance_double(Gitlab::FogbugzImport::Repository,
      safe_name: 'vim',
      path: 'vim',
      raw_data: '')
  end
  let(:import_data) { { 'repo' => repo } }
  let(:credentials) do
    {
      'fb_session' => {
        'uri' => 'https://testing.fogbugz.com',
        'token' => 'token'
      }
    }
  end

  let(:closed_bug) do
    {
      fOpen: 'false',
      sTitle: 'Closed bug',
      sLatestTextSummary: "",
      dtOpened: Time.now.to_s,
      dtLastUpdated: Time.now.to_s,
      events: { event: [] }
    }.with_indifferent_access
  end

  let(:opened_bug) do
    {
      fOpen: 'true',
      sTitle: 'Opened bug',
      sLatestTextSummary: "",
      dtOpened: Time.now.to_s,
      dtLastUpdated: Time.now.to_s,
      events: { event: [] }
    }.with_indifferent_access
  end

  let(:fogbugz_bugs) { [opened_bug, closed_bug] }

  before do
    project.create_import_data(data: import_data, credentials: credentials)
    allow_any_instance_of(::Fogbugz::Interface).to receive(:command).with(:listCategories).and_return([])
    allow_any_instance_of(Gitlab::FogbugzImport::Client).to receive(:cases).and_return(fogbugz_bugs)
  end

  it 'imports bugs' do
    expect { importer.execute }.to change { Issue.count }.by(2)
  end

  it 'imports opened bugs' do
    importer.execute

    issue = Issue.where(project_id: project.id).find_by_title(opened_bug[:sTitle])

    expect(issue.state_id).to eq(Issue.available_states[:opened])
  end

  it 'imports closed bugs' do
    importer.execute

    issue = Issue.where(project_id: project.id).find_by_title(closed_bug[:sTitle])

    expect(issue.state_id).to eq(Issue.available_states[:closed])
  end
end