diff --git a/spec/apis/transactions_controller_spec.rb b/spec/apis/transactions_controller_spec.rb index b11f596..32c7eb2 100644 --- a/spec/apis/transactions_controller_spec.rb +++ b/spec/apis/transactions_controller_spec.rb @@ -1,14 +1,21 @@ describe TransactionsController, type: :api do - let(:api_attributes) do - { - debtor: create(:user).name, - creditor: create(:user).name, + before :each do + @debtor = create :user + @creditor = create :user + @api_attributes = { + debtor: @debtor.name, + creditor: @creditor.name, message: Faker::Lorem.sentence, - euros: rand(2), - cents: 1 + rand(100) + euros: 1, + cents: 25 } end + def post_transaction(extra_attributes = {}) + post '/transactions', { transaction: @api_attributes.merge(extra_attributes) }, + { 'HTTP_ACCEPT' => "application/json", "X_API_KEY" => @key } + end + before :each do @client = Client.create name: "Tap" @key = @client.key @@ -21,8 +28,31 @@ describe TransactionsController, type: :api do end it "should work with valid key" do - post '/transactions', { transaction: api_attributes }, { 'HTTP_ACCEPT' => "application/json", "X_API_KEY" => @key } + post_transaction expect(last_response.status).to eq(201) end end + + describe "successfull creating transaction" do + it "should create a transaction" do + expect { post_transaction }.to change { Transaction.count }.by(1) + end + + it "should set issuer" do + post_transaction + @transaction = Transaction.last + expect(@transaction.issuer).to eq(@client) + end + end + + describe "failed creating transaction" do + it "should create a transaction" do + expect { post_transaction(euros: -5) }.to change { Transaction.count }.by(0) + end + + it "should give 402 status" do + post_transaction(euros: -4) + expect(last_response.status).to eq(422) + end + end end