package Ġcom . kick starter . view models Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . util . Pair Ċ import Ġcom . kick starter . KS Ro bo lectric TestCase Ċ import Ġcom . kick starter . R Ċ import Ġcom . kick starter . libs . Environment Ċ import Ġcom . kick starter . libs . Ko ala Event Ċ import Ġcom . kick starter . libs . Mock CurrentUser Ċ import Ġcom . kick starter . mock . Mock Current Config Ċ import Ġcom . kick starter . mock . factories . Config Factory Ċ import Ġcom . kick starter . mock . factories . Project Factory Ċ import Ġcom . kick starter . mock . factories . User Factory Ċ import Ġcom . kick starter . models . Project Ċ import Ġcom . kick starter . models . User Ċ import Ġcom . kick starter . ui . Intent Key Ċ import Ġorg . junit . Test Ċ import Ġrx . ob servers . Test Subscriber Ċ Ċ class ĠProject ViewModel Test Ġ: ĠK S Ro bo lectric TestCase () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġvm Ġ: ĠProject ViewModel . ViewModel ĊĠĠĠ Ġprivate Ġval Ġheart Drawable Id Ġ= ĠTest Subscriber < Int >() ĊĠĠĠ Ġprivate Ġval Ġproject Test Ġ= ĠTest Subscriber < Project >() ĊĠĠĠ Ġprivate Ġval Ġshow Share Sheet Ġ= ĠTest Subscriber < Project >() ĊĠĠĠ Ġprivate Ġval Ġshow Saved Prompt Test Ġ= ĠTest Subscriber < Void >() ĊĠĠĠ Ġprivate Ġval Ġstart Login T out Activity Ġ= ĠTest Subscriber < Void >() ĊĠĠĠ Ġprivate Ġval Ġsaved Test Ġ= ĠTest Subscriber < Boolean >() ĊĠĠĠ Ġprivate Ġval Ġstart Backing Activity Ġ= ĠTest Subscriber < Pair < Project , ĠUser >>() ĊĠĠĠ Ġprivate Ġval Ġstart Campaign WebView Activity Ġ= ĠTest Subscriber < Project >() ĊĠĠĠ Ġprivate Ġval Ġstart Comments Activity Ġ= ĠTest Subscriber < Project >() ĊĠĠĠ Ġprivate Ġval Ġstart Creator Bio WebView Activity Ġ= ĠTest Subscriber < Project >() ĊĠĠĠ Ġprivate Ġval Ġstart Manage P ledge Activity Ġ= ĠTest Subscriber < Project >() ĊĠĠĠ Ġprivate Ġval Ġstart Project Updates Activity Ġ= ĠTest Subscriber < Project >() ĊĠĠĠ Ġprivate Ġval Ġstart Video Activity Ġ= ĠTest Subscriber < Project >() ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Environment ( environment : ĠEnvironment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . vm Ġ= ĠProject ViewModel . ViewModel ( environment ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . heart Drawable Id (). subscribe ( this . heart Drawable Id ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . project And User Country (). map Ġ{ Ġpc Ġ-> Ġpc . first Ġ}. subscribe ( this . project Test ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . show Share Sheet (). subscribe ( this . show Share Sheet ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . show Saved Prompt (). subscribe ( this . show Saved Prompt Test ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . start Login T out Activity (). subscribe ( this . start Login T out Activity ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . project And User Country (). map Ġ{ Ġpc Ġ-> Ġpc . first . is Star red Ġ}. subscribe ( this . saved Test ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . start Backing Activity (). subscribe ( this . start Backing Activity ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . start Campaign WebView Activity (). subscribe ( this . start Campaign WebView Activity ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . start Comments Activity (). subscribe ( this . start Comments Activity ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . start Creator Bio WebView Activity (). subscribe ( this . start Creator Bio WebView Activity ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . start Manage P ledge Activity (). subscribe ( this . start Manage P ledge Activity ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . start Project Updates Activity (). subscribe ( this . start Project Updates Activity ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . start Video Activity (). subscribe ( this . start Video Activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Project ViewModel _ Emit s Project With Standard SetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject Factory . project () ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Config Ġ= ĠMock Current Config () ĊĠĠĠĠĠĠĠ Ġcurrent Config . config ( Config Factory . config ()) ĊĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment (). to Builder (). current Config ( current Config ). build ()) ĊĠĠĠĠĠĠĠ Ġthis . vm . intent ( Intent (). putExtra ( Intent Key . PROJECT , Ġproject )) ĊĊĠĠĠĠĠĠĠ Ġthis . project Test . assert Values ( project , Ġproject ) ĊĠĠĠĠĠĠĠ Ġthis . ko ala Test . assert Values ( Ko ala Event . PROJECT _ PAGE , ĠKo ala Event . VIEW ED _ PROJECT _ PAGE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Project ViewModel _ Logged Out Star Project Flow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcurrentUser Ġ= ĠMock CurrentUser () ĊĠĠĠĠĠĠĠ Ġval Ġenvironment Ġ= Ġenvironment (). to Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. currentUser ( currentUser ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġenvironment . current Config (). config ( Config Factory . config ()) ĊĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġview Ġmodel Ġwith Ġa Ġproject ĊĠĠĠĠĠĠĠ Ġthis . vm . intent ( Intent (). putExtra ( Intent Key . PROJECT , ĠProject Factory . half Way Project ())) ĊĊĠĠĠĠĠĠĠ Ġthis . saved Test . assert Values ( false , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġthis . heart Drawable Id . assert Values ( R . drawable . icon __ heart _ outline , ĠR . drawable . icon __ heart _ outline ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTry Ġst arr ing Ġwhile Ġlogged Ġout ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . heart Button Clicked () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġproject Ġshouldn 't Ġbe Ġsaved , Ġand Ġa Ġlogin Ġprompt Ġshould Ġbe Ġshown . ĊĠĠĠĠĠĠĠ Ġthis . saved Test . assert Values ( false , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġthis . heart Drawable Id . assert Values ( R . drawable . icon __ heart _ outline , ĠR . drawable . icon __ heart _ outline ) ĊĠĠĠĠĠĠĠ Ġthis . show Saved Prompt Test . assert Value Count ( 0 ) ĊĠĠĠĠĠĠĠ Ġthis . start Login T out Activity . assert Value Count ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠA Ġko ala Ġevent Ġfor Ġst arr ing Ġshould ĠNOT Ġbe Ġtracked ĊĠĠĠĠĠĠĠ Ġthis . ko ala Test . assert Values ( Ko ala Event . PROJECT _ PAGE , ĠKo ala Event . VIEW ED _ PROJECT _ PAGE ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠLogin ĊĠĠĠĠĠĠĠ ĠcurrentUser . refresh ( User Factory . user ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġproject Ġshould Ġbe Ġsaved , Ġand Ġa Ġstar Ġprompt Ġshould Ġbe Ġshown . ĊĠĠĠĠĠĠĠ Ġthis . saved Test . assert Values ( false , Ġfalse , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġthis . heart Drawable Id . assert Values ( R . drawable . icon __ heart _ outline , ĠR . drawable . icon __ heart _ outline , ĠR . drawable . icon __ heart ) ĊĠĠĠĠĠĠĠ Ġthis . show Saved Prompt Test . assert Value Count ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠA Ġko ala Ġevent Ġfor Ġst arr ing Ġshould Ġbe Ġtracked ĊĠĠĠĠĠĠĠ Ġthis . ko ala Test . assert Values ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKo ala Event . PROJECT _ PAGE , ĠKo ala Event . VIEW ED _ PROJECT _ PAGE , ĠKo ala Event . PROJECT _ STAR , ĠKo ala Event . STAR RED _ PROJECT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Project ViewModel _ Show Share Sheet () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject Factory . project () ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser Factory . user () ĊĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment (). to Builder (). currentUser ( Mock CurrentUser ( user )). build ()) ĊĠĠĠĠĠĠĠ Ġthis . vm . intent ( Intent (). putExtra ( Intent Key . PROJECT , Ġproject )) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . share Button Clicked () ĊĠĠĠĠĠĠĠ Ġthis . show Share Sheet . assert Values ( project ) ĊĠĠĠĠĠĠĠ Ġthis . ko ala Test . assert Values ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKo ala Event . PROJECT _ PAGE , ĠKo ala Event . VIEW ED _ PROJECT _ PAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKo ala Event . PROJECT _ SHOW _ SHARE _ SHE ET _ LEG ACY , ĠKo ala Event . SHOW ED _ SHARE _ SHE ET ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Project ViewModel _ Star Project That Is Almost Completed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject Factory . almost Completed Project () ĊĊĠĠĠĠĠĠĠ Ġval ĠcurrentUser Ġ= ĠMock CurrentUser () ĊĠĠĠĠĠĠĠ Ġval Ġenvironment Ġ= Ġenvironment (). to Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. currentUser ( currentUser ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġenvironment . current Config (). config ( Config Factory . config ()) ĊĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġview Ġmodel Ġwith Ġan Ġalmost Ġcompleted Ġproject ĊĠĠĠĠĠĠĠ Ġthis . vm . intent ( Intent (). putExtra ( Intent Key . PROJECT , Ġproject )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠLogin ĊĠĠĠĠĠĠĠ ĠcurrentUser . refresh ( User Factory . user ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStar Ġthe Ġproject ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . heart Button Clicked () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġproject Ġshould Ġbe Ġsaved , Ġand Ġa Ġsave Ġprompt Ġshould ĠNOT Ġbe Ġshown . ĊĠĠĠĠĠĠĠ Ġthis . saved Test . assert Values ( false , Ġfalse , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġthis . heart Drawable Id . assert Values ( R . drawable . icon __ heart _ outline , ĠR . drawable . icon __ heart _ outline , ĠR . drawable . icon __ heart ) ĊĠĠĠĠĠĠĠ Ġthis . show Saved Prompt Test . assert Value Count ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Project ViewModel _ Save Project That Is Successful () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcurrentUser Ġ= ĠMock CurrentUser () ĊĠĠĠĠĠĠĠ Ġval Ġenvironment Ġ= Ġenvironment (). to Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. currentUser ( currentUser ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġenvironment . current Config (). config ( Config Factory . config ()) ĊĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġview Ġmodel Ġwith Ġa Ġsuccessful Ġproject ĊĠĠĠĠĠĠĠ Ġthis . vm . intent ( Intent (). putExtra ( Intent Key . PROJECT , ĠProject Factory . successful Project ())) ĊĊĠĠĠĠĠĠĠ Ġ// ĠLogin ĊĠĠĠĠĠĠĠ ĠcurrentUser . refresh ( User Factory . user ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStar Ġthe Ġproject ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . heart Button Clicked () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġproject Ġshould Ġbe Ġsaved , Ġand Ġa Ġsave Ġprompt Ġshould ĠNOT Ġbe Ġshown . ĊĠĠĠĠĠĠĠ Ġthis . saved Test . assert Values ( false , Ġfalse , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġthis . heart Drawable Id . assert Values ( R . drawable . icon __ heart _ outline , ĠR . drawable . icon __ heart _ outline , ĠR . drawable . icon __ heart ) ĊĠĠĠĠĠĠĠ Ġthis . show Saved Prompt Test . assert Value Count ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Project ViewModel _ Start Backing Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject Factory . project () ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser Factory . user () ĊĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment (). to Builder (). currentUser ( Mock CurrentUser ( user )). build ()) ĊĠĠĠĠĠĠĠ Ġthis . vm . intent ( Intent (). putExtra ( Intent Key . PROJECT , Ġproject )) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . view P ledge Button Clicked () ĊĠĠĠĠĠĠĠ Ġthis . start Backing Activity . assert Values ( Pair . create ( project , Ġuser )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Project ViewModel _ Start Campaign WebView Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject Factory . project () ĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġview Ġmodel Ġwith Ġa Ġproject . ĊĠĠĠĠĠĠĠ Ġthis . vm . intent ( Intent (). putExtra ( Intent Key . PROJECT , Ġproject )) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . blur b TextView Clicked () ĊĠĠĠĠĠĠĠ Ġthis . start Campaign WebView Activity . assert Values ( project ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Project ViewModel _ Start Creator Bio WebView Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject Factory . project () ĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġview Ġmodel Ġwith Ġa Ġproject . ĊĠĠĠĠĠĠĠ Ġthis . vm . intent ( Intent (). putExtra ( Intent Key . PROJECT , Ġproject )) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . creator Name TextView Clicked () ĊĠĠĠĠĠĠĠ Ġthis . start Creator Bio WebView Activity . assert Values ( project ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Project ViewModel _ Start Comments Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject Factory . project () ĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġview Ġmodel Ġwith Ġa Ġproject . ĊĠĠĠĠĠĠĠ Ġthis . vm . intent ( Intent (). putExtra ( Intent Key . PROJECT , Ġproject )) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . comments TextView Clicked () ĊĠĠĠĠĠĠĠ Ġthis . start Comments Activity . assert Values ( project ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Project ViewModel _ Start Manage P ledge Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject Factory . project () ĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġview Ġmodel Ġwith Ġa Ġproject . ĊĠĠĠĠĠĠĠ Ġthis . vm . intent ( Intent (). putExtra ( Intent Key . PROJECT , Ġproject )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġon ĠManage Ġp ledge Ġbutton . ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . manage P ledge Button Clicked () ĊĠĠĠĠĠĠĠ Ġthis . start Manage P ledge Activity . assert Values ( project ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Project ViewModel _ Start Project Updates Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject Factory . project () ĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġview Ġmodel Ġwith Ġa Ġproject . ĊĠĠĠĠĠĠĠ Ġthis . vm . intent ( Intent (). putExtra ( Intent Key . PROJECT , Ġproject )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠClick Ġon ĠUpdates Ġbutton . ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . updates TextView Clicked () ĊĠĠĠĠĠĠĠ Ġthis . start Project Updates Activity . assert Values ( project ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Project ViewModel _ Start Video Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject Factory . project () ĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġview Ġmodel Ġwith Ġa Ġproject . ĊĠĠĠĠĠĠĠ Ġthis . vm . intent ( Intent (). putExtra ( Intent Key . PROJECT , Ġproject )) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . play Video Button Clicked () ĊĠĠĠĠĠĠĠ Ġthis . start Video Activity . assert Values ( project ) ĊĠĠĠ Ġ} Ċ } Ċ