/**
 * Copyright 2017, Google, Inc.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

'use strict';

const proxyquire = require(`proxyquire`).noPreserveCache();
const sinon = require(`sinon`);
const test = require(`ava`);
const tools = require(`@google-cloud/nodejs-repo-tools`);
const uuid = require(`uuid`);


const {Storage} = proxyquire(`@google-cloud/storage`, {});

const storage = new Storage();
const bucketName = `nodejs-storage-samples-${uuid.v4()}`;
const bucket = storage.bucket(bucketName);

test.before(tools.stubConsole);
test.after.always(async () => {
  tools.restoreConsole();
  try {
    await bucket.delete();
  } catch (err) {} // ignore error
});

test.cb(`should create a bucket`, t => {
  const expectedBucketName = `my-new-bucket`;

  const storageMock = {
    createBucket: _bucketName => {
      t.is(_bucketName, expectedBucketName);

      return bucket.create().then(([bucket]) => {
        t.not(bucket, undefined);
        t.is(bucket.name, bucketName);

        setTimeout(() => {
          try {
            t.true(console.log.calledOnce);
            t.deepEqual(console.log.firstCall.args, [
              `Bucket ${expectedBucketName} created.`,
            ]);
            t.end();
          } catch (err) {
            t.end(err);
          }
        }, 200);

        return [bucket];
      });
    },
  };

  proxyquire(`../quickstart`, {
    '@google-cloud/storage': sinon.stub().returns(storageMock),
  });
});

@@ -813,17 +813,16 @@
 uid%60);%0A%0A
-%0A
 const %7BS
@@ -1263,25 +1263,25 @@
 %60;%0A%0A  const 
-s
+S
 torageMock =
@@ -1280,16 +1280,22 @@
 geMock =
+ class
  %7B%0A    c
@@ -1305,18 +1305,17 @@
 teBucket
-: 
+(
 _bucketN
@@ -1317,19 +1317,17 @@
 cketName
- =%3E
+)
  %7B%0A     
@@ -1844,17 +1844,16 @@
 );%0A    %7D
-,
 %0A  %7D;%0A%0A 
@@ -1916,30 +1916,26 @@
 e': 
-sinon.stub().returns(s
+%7B%0A      Storage: S
 tora
@@ -1940,17 +1940,23 @@
 rageMock
-)
+,%0A    %7D
 ,%0A  %7D);%0A

fix quickstart.test.js using new export structure (#348)