Sha256: f49698b3db424410e95e7fdbfc5a2f69b5bb9dc31d374cce75dc83968b0ac502

Contents?: true

Size: 1.95 KB

Versions: 10

Compression:

Stored size: 1.95 KB

Contents

RSpec.describe Flipper::Api::V1::Actions::Import do
  let(:app) { build_api(flipper) }

  describe 'post' do
    let(:expression) { Flipper.property(:plan).eq("basic") }

    context 'succesful request' do
      before do
        flipper.enable(:search)
        flipper.disable(:adios)

        source_flipper = build_flipper
        source_flipper.disable(:search)
        source_flipper.enable_actor(:google_analytics, Flipper::Actor.new("User;1"))
        source_flipper.enable(:analytics, expression)

        export = source_flipper.export

        post '/import', export.contents, 'CONTENT_TYPE' => 'application/json'
      end

      it 'responds 204' do
        expect(last_response.status).to eq(204)
      end

      it 'imports features' do
        expect(flipper[:search].boolean_value).to be(false)
        expect(flipper[:google_analytics].actors_value).to eq(Set["User;1"])
        expect(flipper[:analytics].expression_value).to eq(expression.value)
        expect(flipper.features.map(&:key)).to eq(["search", "google_analytics", "analytics"])
      end
    end

    context 'empty request' do
      before do
        flipper.enable(:search)
        flipper.disable(:adios)

        source_flipper = build_flipper
        export = source_flipper.export

        post '/import', export.contents, 'CONTENT_TYPE' => 'application/json'
      end

      it 'responds 204' do
        expect(last_response.status).to eq(204)
      end

      it 'removes all features' do
        expect(flipper.features.map(&:key)).to eq([])
      end
    end

    context 'bad request' do
      before do
        post '/import'
      end

      it 'returns correct status code' do
        expect(last_response.status).to eq(422)
      end

      it 'returns formatted error' do
        expected = {
          'code' => 6,
          'message' => 'Import invalid.',
          'more_info' => api_error_code_reference_url,
        }
        expect(json_response).to eq(expected)
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
flipper-api-1.3.2 spec/flipper/api/v1/actions/import_spec.rb
flipper-api-1.3.1 spec/flipper/api/v1/actions/import_spec.rb
flipper-api-1.3.0 spec/flipper/api/v1/actions/import_spec.rb
flipper-api-1.3.0.pre spec/flipper/api/v1/actions/import_spec.rb
flipper-api-1.2.2 spec/flipper/api/v1/actions/import_spec.rb
flipper-api-1.2.1 spec/flipper/api/v1/actions/import_spec.rb
flipper-api-1.2.0 spec/flipper/api/v1/actions/import_spec.rb
flipper-api-1.1.2 spec/flipper/api/v1/actions/import_spec.rb
flipper-api-1.1.1 spec/flipper/api/v1/actions/import_spec.rb
flipper-api-1.1.0 spec/flipper/api/v1/actions/import_spec.rb