Optimus

Optimus is a dynamic mock tool for retrofit

License

License

GroupId

GroupId

com.cocosw
ArtifactId

ArtifactId

optimus
Last Version

Last Version

1.0.0
Release Date

Release Date

Type

Type

aar
Description

Description

Optimus
Optimus is a dynamic mock tool for retrofit
Project URL

Project URL

https://github.com/soarcn/Optimus
Source Code Management

Source Code Management

https://github.com/soarcn/Optimus

Download optimus

How to add to project

<!-- https://jarcasting.com/artifacts/com.cocosw/optimus/ -->
<dependency>
    <groupId>com.cocosw</groupId>
    <artifactId>optimus</artifactId>
    <version>1.0.0</version>
    <type>aar</type>
</dependency>
// https://jarcasting.com/artifacts/com.cocosw/optimus/
implementation 'com.cocosw:optimus:1.0.0'
// https://jarcasting.com/artifacts/com.cocosw/optimus/
implementation ("com.cocosw:optimus:1.0.0")
'com.cocosw:optimus:aar:1.0.0'
<dependency org="com.cocosw" name="optimus" rev="1.0.0">
  <artifact name="optimus" type="aar" />
</dependency>
@Grapes(
@Grab(group='com.cocosw', module='optimus', version='1.0.0')
)
libraryDependencies += "com.cocosw" % "optimus" % "1.0.0"
[com.cocosw/optimus "1.0.0"]

Dependencies

runtime (6)

Group / Artifact Type Version
org.jetbrains.kotlin : kotlin-stdlib jar 1.3.72
org.jetbrains.kotlin : kotlin-reflect jar 1.3.72
com.squareup.retrofit2 : retrofit jar 2.9.0
com.squareup.retrofit2 : retrofit-mock jar 2.9.0
com.squareup.retrofit2 : converter-moshi jar 2.9.0
com.squareup.retrofit2 : converter-gson jar 2.9.0

Project Modules

There are no modules declared in this project.

Optimus

Maven

Optimus is a dynamic mock tool for retrofit

Sample

Usage

Given you have a service interface

interface Api {
    @POST("api/login")
    fun login(): Call<Void>
}

Step 1 Define mock data

class MockUser : MockResponse {
    @Default
    val HTTP200 = success {}
    val HTTP401 = error(401,"UnAuthorized") { ApiError(401, "Unauthorized") }
}

Step 2 Create an optimus instance

val supplier = MockResponseSupplier.create(sharedpreference)
Optimus.Builder(supplier)
                    .retrofit(retrofit,sharedpreference)
                    .mockGraph(
                               alter(Api::class.java, "Api") {
                                   Api::login with MockUser::class named "Login"
                               })
                    .converter(Converter.create(moshi))
                    .build()

Step 3 Replace retrofit with optimus

optimus.create(Api::class.java)

Optimus provides a view to change mock behavior in runtime, You may use it in a Alert like this

AlertDialog.Builder(this)
           .setView(OptimusView(this).apply { this.setOptimus(optimus) })
           .create().show()

Testing

Optimus makes unittest and UI test easier.

Step1 User InMemory MockResponseSupplier and mockretrofit

val supplier = MockResponseSupplier.memory()

Optimus.Builder(supplier)
       .retrofit(retrofit)
       .mockGraph(mockgraph)
       .build()

Step2 Change mock response with Api

        val api = optimus.create(Api::class.java)
        mockResponseSupplier.set(Api::call, MockUser::HTTP401)
        assert(api.login().response.code,401)

Download

    implementation 'com.cocosw:optimus:1.0.0'

Versions

Version
1.0.0