diff --git a/tests/TransactionTest.php b/tests/TransactionTest.php
new file mode 100644
index 0000000..bf622aa
--- /dev/null
+++ b/tests/TransactionTest.php
@@ -0,0 +1,69 @@
+<?php
+
+use CraigPaul\Moneris\Moneris;
+use CraigPaul\Moneris\Transaction;
+
+class TransactionTest extends TestCase
+{
+    /**
+     * The Moneris gateway.
+     *
+     * @var \CraigPaul\Moneris\Gateway
+     */
+    protected $gateway;
+
+    /**
+     * The Moneris API parameters.
+     *
+     * @var array
+     */
+    protected $params;
+
+    /**
+     * @var \CraigPaul\Moneris\Transaction
+     */
+    protected $transaction;
+
+    /**
+     * Set up the test environment.
+     *
+     * @return void
+     */
+    public function setUp()
+    {
+        parent::setUp();
+
+        $this->params = ['environment' => Moneris::ENV_TESTING];
+        $this->gateway = Moneris::create($this->id, $this->token, $this->params)->connect();
+        $this->params = [
+            'order_id' => '1234-567890',
+            'amount' => '1.00',
+            'pan' => $this->visa,
+            'expdate' => '2012',
+        ];
+        $this->transaction = new Transaction($this->gateway, $this->params);
+    }
+
+    /** @test */
+    public function it_can_access_properties_of_the_class()
+    {
+        $this->assertEquals($this->gateway, $this->transaction->gateway);
+        $this->assertEquals($this->params, $this->transaction->params);
+    }
+
+    /** @test */
+    public function it_can_prepare_parameters_that_were_submitted_improperly()
+    {
+        $order = '   1234-567890';
+        $card = '4242 4242 4242 4242';
+        $transaction = new Transaction($this->gateway, [
+            'order_id' => $order,
+            'amount' => '1.00',
+            'pan' => $card,
+            'expdate' => '2012',
+        ]);
+
+        $this->assertEquals(trim($order), $transaction->params['order_id']);
+        $this->assertEquals(preg_replace('/\D/', '', $card), $transaction->params['pan']);
+    }
+}
\ No newline at end of file