Skip to content

binghuan/GithubBrowserSample

Repository files navigation

Github Browser Sample with Android Architecture Components

This app is based on sample app that uses Android Architecture Components with Dagger 2.
Here is the file diff:

Table of Contents

Introduction

Functionality

The app is composed of 3 main screens.

UserSearchFragment

  • Allows you to search users on Github.
  • Each search result is kept in the database in UserSearchResult table where the list of repository IDs are denormalized into a single column.
  • The actual User instances live in the User table.
  • Each time a new page is fetched, the same UserSearchResult record in the Database is updated with the new list of user ids. (NOTE The UI currently loads all User items at once, which would not perform well on lower end devices. Instead of manually writing lazy adapters, we've decided to wait until the built in support in Room is released.)

RepoFragment

  • This fragment displays the details of a repository and its contributors.

UserFragment

  • This fragment displays a user and their repositories.

GitHub Service APIs

Building

You can open the project in Android studio and press run.

Demo

Download

You can download the apk through the following QR code for installation.

Testing

The project uses both instrumentation tests that run on the device and local unit tests that run on your computer.

Device Tests

Database Tests

The project creates an in memory database for each database test but still runs them on the device.

Local Unit Tests

ViewModel Tests

Each ViewModel is tested using local unit tests with mock Repository implementations.

Repository Tests

Each Repository is tested using local unit tests with mock web service and mock database.

Webservice Tests

The project uses MockWebServer project to test REST api interactions.

Libraries

License

Copyright 2017 The Android Open Source Project, Inc.

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you 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.

About

A simple GitHub browser app. (Coding Quest from 17 Live - "Wave" )

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages