diff --git a/tests/Aggregation/Pipeline/BucketScriptAggregationTest.php b/tests/Aggregation/Pipeline/BucketScriptAggregationTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..5dd8a05aa20f2f81696a978f19a7550350c39400
--- /dev/null
+++ b/tests/Aggregation/Pipeline/BucketScriptAggregationTest.php
@@ -0,0 +1,63 @@
+<?php
+
+/*
+ * This file is part of the ONGR package.
+ *
+ * (c) NFQ Technologies UAB <info@nfq.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace ONGR\ElasticsearchDSL\Tests\Aggregation\Pipeline;
+
+use ONGR\ElasticsearchDSL\Aggregation\Pipeline\BucketScriptAggregation;
+
+/**
+ * Unit test for bucket script pipeline aggregation.
+ */
+class BucketScriptAggregationTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Tests toArray method.
+     */
+    public function testToArray()
+    {
+        $aggregation = new BucketScriptAggregation(
+            'test',
+            [
+                'my_var1' => 'foo',
+                'my_var2' => 'bar',
+            ]
+        );
+        $aggregation->setScript('test script');
+        $aggregation->addParameter('gap_policy', 'insert_zeros');
+
+        $expected = [
+            'bucket_script' => [
+                'buckets_path' => [
+                    'my_var1' => 'foo',
+                    'my_var2' => 'bar',
+                ],
+                'script' => 'test script',
+                'gap_policy' => 'insert_zeros',
+            ],
+        ];
+
+        $this->assertEquals($expected, $aggregation->toArray());
+    }
+
+    /**
+     * Tests if the exception is thrown in getArray method if no
+     * buckets_path or script is set
+     *
+     * @expectedException \LogicException
+     * @expectedExceptionMessage `test` aggregation must have script set.
+     */
+    public function testGetArrayException()
+    {
+        $agg = new BucketScriptAggregation('test', []);
+
+        $agg->getArray();
+    }
+}