Package wrapper provides a fakable wrapped interface for the appengine SDK's APIs. This means that it's possible to mock all of the supported appengine APIs for testing (or potentially implement a different backend for them, though you would still need to provide enough of the appengine SDK for a few key types).

wrapper currently provides interfaces for:

* Datastore
* Memcache
* TaskQueue
* GlobalInfo (e.g. Namespace, AppID, etc.)

A package which implements the wrapper is expected to provide the following:

  * A package function `Enable(c context.Context, ...) context.Context`
    This function is expected to add any information to c which is necessary
    for the rest of its implementations to work. This may be something like
    an `appengine.Context` or some connection information for an external
    server. The `...` in the function signature may be any additional data
  * Any of the package functions:

      UseDS(context.Context) context.Context
      UseMC(context.Context) context.Context
		   UseTQ(context.Context) context.Context
      UseGI(context.Context) context.Context

	   each of which would call wrapper.Set<service>Factory with the factory
	   function for that interface type.
	 * A `Use(context.Context) context.Context` function which calls all of the
	   `Use*` package functions implemented by the package.
  * Partially-implemented interfaces should embed one of the Dummy* structs
    which will panic with an appropriate error for unimplemented

see "infra/gae/libs/wrapper/gae" for an appengine-backed implementation.

Imports 2 package(s)


Test imports 1 package(s)