require_relative '../test_config' require 'helix_versioning_engine' describe 'HelixVersioningEngine counters' do include Rack::Test::Methods def app HELIX_WEB_SERVICES_APP end randstr = (0...8).map { (65 + rand(26)).chr }.join counter_1 = "#{randstr}_test_1" counter_2 = "#{randstr}_test_2" context 'PUT /helix_versioning_engine/v78/counters/[counter]' do it 'can create a numerical counter' do authorize 'super', ticket_for_super put("/helix_versioning_engine/v78/counters/#{counter_1}", value: '1') expect(last_response.status).to eq(200) end it 'can create a text counter' do authorize 'super', ticket_for_super put("/helix_versioning_engine/v78/counters/#{counter_2}", value: randstr) expect(last_response.status).to eq(200) end end context 'GET /helix_versioning_engine/v78/counters' do it 'can include our test counters in the list' do authorize 'super', ticket_for_super get('/helix_versioning_engine/v78/counters') expect(last_response.status).to eq(200) counters = JSON.parse(last_response.body) expect(counters.map { |x| x['counter'] }).to include(counter_1) expect(counters.map { |x| x['counter'] }).to include(counter_2) end end context 'GET /helix_versioning_engine/v78/counters/[counter]' do it 'can list our numerical counter' do authorize 'super', ticket_for_super get("/helix_versioning_engine/v78/counters/#{counter_1}") expect(last_response.status).to eq(200) counter = JSON.parse(last_response.body) expect(counter['value']).to eq('1') end it 'can list the text counter' do authorize 'super', ticket_for_super get("/helix_versioning_engine/v78/counters/#{counter_2}") expect(last_response.status).to eq(200) counter = JSON.parse(last_response.body) expect(counter['value']).to eq(randstr) end end context 'POST /helix_versioning_engine/v78/counters/[counter]/increment' do it 'can increment the numerical counter' do authorize 'super', ticket_for_super post("/helix_versioning_engine/v78/counters/#{counter_1}/increment") expect(last_response.status).to eq(200) get("/helix_versioning_engine/v78/counters/#{counter_1}") expect(last_response.status).to eq(200) counter = JSON.parse(last_response.body) expect(counter['value']).to eq('2') end end context 'DELETE /helix_versioning_engine/v78/counters/[counter]' do it 'can delete our test counters' do authorize 'super', ticket_for_super delete("/helix_versioning_engine/v78/counters/#{counter_1}") delete("/helix_versioning_engine/v78/counters/#{counter_2}") expect(last_response.status).to eq(200) get('/helix_versioning_engine/v78/counters') expect(last_response.status).to eq(200) counters = JSON.parse(last_response.body) expect(counters.map { |x| x['counter'] }).to_not include(counter_1) expect(counters.map { |x| x['counter'] }).to_not include(counter_2) end end end