|  | 
| 476 | 476 | 
 | 
| 477 | 477 |   describe "idempotency" do | 
| 478 | 478 |     let(:customer) { Stripe::Customer.create(email : '[email protected]') } | 
| 479 |  | -    let(:idempotent_charge_params) {{ | 
|  | 479 | +    let(:charge_params) {{ | 
| 480 | 480 |       amount: 777, | 
| 481 | 481 |       currency: 'USD', | 
| 482 | 482 |       customer: customer.id, | 
| 483 |  | -      capture: true, | 
|  | 483 | +      capture: true | 
|  | 484 | +    }} | 
|  | 485 | +    let(:charge_headers) {{ | 
| 484 | 486 |       idempotency_key: 'onceisenough' | 
| 485 | 487 |     }} | 
| 486 | 488 | 
 | 
| 487 | 489 |     it "returns the original charge if the same idempotency_key is passed in" do | 
| 488 |  | -      charge1 = Stripe::Charge.create(idempotent_charge_params) | 
| 489 |  | -      charge2 = Stripe::Charge.create(idempotent_charge_params) | 
|  | 490 | +      charge1 = Stripe::Charge.create(charge_params, charge_headers) | 
|  | 491 | +      charge2 = Stripe::Charge.create(charge_params, charge_headers) | 
| 490 | 492 | 
 | 
| 491 | 493 |       expect(charge1).to eq(charge2) | 
| 492 | 494 |     end | 
| 493 | 495 | 
 | 
| 494 |  | -    it "returns different charges if different idempotency_keys are used for each charge" do | 
| 495 |  | -      idempotent_charge_params2 = idempotent_charge_params.clone | 
| 496 |  | -      idempotent_charge_params2[:idempotency_key] = 'thisoneisdifferent' | 
|  | 496 | +    context 'different key' do | 
|  | 497 | +      let(:different_charge_headers) {{ | 
|  | 498 | +        idempotency_key: 'thisoneisdifferent' | 
|  | 499 | +      }} | 
| 497 | 500 | 
 | 
| 498 |  | -      charge1 = Stripe::Charge.create(idempotent_charge_params) | 
| 499 |  | -      charge2 = Stripe::Charge.create(idempotent_charge_params2) | 
|  | 501 | +      it "returns different charges if different idempotency_keys are used for each charge" do | 
|  | 502 | +        charge1 = Stripe::Charge.create(charge_params, charge_headers) | 
|  | 503 | +        charge2 = Stripe::Charge.create(charge_params, different_charge_headers) | 
| 500 | 504 | 
 | 
| 501 |  | -      expect(charge1).not_to eq(charge2) | 
|  | 505 | +        expect(charge1).not_to eq(charge2) | 
|  | 506 | +      end | 
| 502 | 507 |     end | 
| 503 | 508 |   end | 
| 504 | 509 | 
 | 
|  | 
0 commit comments