package Ġorg . od k . collect . android . feature . settings Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Rule Chain Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . od k . collect . android . R Ċ import Ġorg . od k . collect . android . injection . config . App Dependency Module Ċ import Ġorg . od k . collect . android . metadata . Install ID Provider Ċ import Ġorg . od k . collect . android . support . Collect Test Rule Ċ import Ġorg . od k . collect . android . support . Reset State Rule Ċ import Ġorg . od k . collect . android . support . Test Rule Chain Ċ import Ġorg . od k . collect . android . support . pages . MainMenu Page Ċ import Ġorg . od k . collect . android . support . pages . Project Settings Page Ċ import Ġorg . od k . collect . android . support . pages . Save Or Ignore Dialog Ċ import Ġorg . od k . collect . android . support . pages . User And Device Identity Settings Page Ċ import Ġorg . od k . collect . android . utilities . Device Details Provider Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠForm Metadata Settings Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdevice Details Provider : ĠDevice Details Provider Ġ= ĠFake Device Details Provider () ĊĠĠĠ Ġvar Ġrule Ġ= ĠCollect Test Rule () ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġvar Ġcopy Form Chain : ĠRule Chain Ġ= ĠTest Rule Chain . chain () ĊĠĠĠĠĠĠĠ Ġ. around ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe setState Rule ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠApp Dependency Module () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprovides Device Details Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstall ID Provider : ĠInstall ID Provider ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠDevice Details Provider Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdevice Details Provider ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. around ( rule ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsetting Metadata _ lets The m Be Included In A Form () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . start At MainMenu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. copy Form (" metadata . xml ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. open Project Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click General Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click User And Device Identity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Form Metadata () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Username () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Text (" Ch ino ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click OK On Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Preference ( R . string . username , Ġ" Ch ino ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Email () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Text (" ch ino @ white p ony . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click OK On Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Preference ( R . string . email , Ġ" ch ino @ white p ony . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click PhoneNumber () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Text (" 6 6 4 6 1 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click OK On Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Preference ( R . string . phone _ number , Ġ" 6 6 4 6 1 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( User And Device Identity Settings Page ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( Project Settings Page ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( MainMenu Page ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start Blank Form (" Metadata ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Text (" Ch ino ", Ġ" ch ino @ white p ony . com ", Ġ" 6 6 4 6 1 5 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġ// ĠIssue Ġnumber ĠNO DK - 2 3 8 ĠTestCase 4 ĠTestCase 5 ĊĠĠĠ Ġfun Ġsetting Server Username _ used As Fallback For Metadata Username () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . start At MainMenu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. copy Form (" metadata . xml ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. open Project Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click General Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Server Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Server Username () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Text (" Ch ino ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click OK On Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( Project Settings Page ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( MainMenu Page ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start Blank Form (" Metadata ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Text (" Ch ino ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( Save Or Ignore Dialog (" Metadata ", ĠMain Menu Page ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Ignore Changes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. open Project Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click General Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click User And Device Identity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Form Metadata () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Username () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Text (" Ste phen ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click OK On Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( User And Device Identity Settings Page ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( Project Settings Page ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( MainMenu Page ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start Blank Form (" Metadata ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Text (" Ste phen ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdevice Identifiers Are Displayed In Settings () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . start At MainMenu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. copy Form (" metadata . xml ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. open Project Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click General Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click User And Device Identity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Form Metadata () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Preference ( R . string . device _ id , Ġdevice Details Provider . deviceId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdevice Identifiers Can Be Included In A Form () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . start At MainMenu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. copy Form (" metadata . xml ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start Blank Form (" Metadata ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. scrollTo And Assert Text ( device Details Provider . deviceId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġ// Ġhttps :// github . com / get od k / collect / issues / 4 7 9 2 ĊĠĠĠ Ġfun Ġmetadata Properties _ shouldBe Re loaded After Switch ing Projects () Ġ{ ĊĠĠĠĠĠĠĠ Ġrule . start At MainMenu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. copy Form (" metadata . xml ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. open Project Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click General Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click User And Device Identity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Form Metadata () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Email () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Text (" demo @ get od k . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click OK On Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click PhoneNumber () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Text (" 1 2 3 4 5 6 7 8 9 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click OK On Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Username () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Text (" Demo Ġuser ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click OK On Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( User And Device Identity Settings Page ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( Project Settings Page ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( MainMenu Page ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add And Switch To Project (" https :// second - project . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. copy Form (" metadata . xml ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. open Project Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click General Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click User And Device Identity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Form Metadata () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Email () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Text (" john @ second - project . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click OK On Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click PhoneNumber () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Text (" 9 8 7 6 5 4 3 2 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click OK On Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Username () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Text (" John ĠSmith ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click OK On Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( User And Device Identity Settings Page ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( Project Settings Page ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. press Back ( MainMenu Page ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Fill Blank Form () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click On Form (" Metadata ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. scrollTo And Assert Text (" john @ second - project . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. scrollTo And Assert Text (" 9 8 7 6 5 4 3 2 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. scrollTo And Assert Text (" John ĠSmith ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. swipe ToEnd Screen () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Save And Exit () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. open Project Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select Project (" Demo Ġproject ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Fill Blank Form () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click On Form (" Metadata ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. scrollTo And Assert Text (" demo @ get od k . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. scrollTo And Assert Text (" 1 2 3 4 5 6 7 8 9 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. scrollTo And Assert Text (" Demo Ġuser ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. swipe ToEnd Screen () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Save And Exit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠFake Device Details Provider Ġ: ĠDevice Details Provider Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget DeviceId (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" device ID " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Line 1 Number (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" line 1 Number " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ