1c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin/*
2564e43098c323d1a90be53c190b8fdbdde973505Sumir Kataria * Copyright 2018 The Android Open Source Project
3c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin *
4c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin * Licensed under the Apache License, Version 2.0 (the "License");
5c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin * you may not use this file except in compliance with the License.
6c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin * You may obtain a copy of the License at
7c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin *
8c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin *      http://www.apache.org/licenses/LICENSE-2.0
9c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin *
10c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin * Unless required by applicable law or agreed to in writing, software
11c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin * distributed under the License is distributed on an "AS IS" BASIS,
12c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin * See the License for the specific language governing permissions and
14c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin * limitations under the License.
15c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin */
16c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin
17564e43098c323d1a90be53c190b8fdbdde973505Sumir Katariapackage androidx.work;
18c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin
19c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarinimport android.support.test.InstrumentationRegistry;
20c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin
21b5728f4e1a4b3f4f1fabf033b1363ca6b1cffdefSumir Katariaimport androidx.work.impl.WorkDatabase;
22b5728f4e1a4b3f4f1fabf033b1363ca6b1cffdefSumir Kataria
23c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarinimport org.junit.After;
24c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarinimport org.junit.Before;
25c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin
26c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin/**
27c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin * An abstract class for getting an in-memory instance of the {@link WorkDatabase}.
28c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin */
291cd0e4eb391fb7e7d5ac60433f705496a9390384Sumir Katariapublic abstract class DatabaseTest extends WorkManagerTest {
30c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin    protected WorkDatabase mDatabase;
31c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin
32c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin    @Before
33c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin    public void initializeDb() {
34c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin        mDatabase = WorkDatabase.create(InstrumentationRegistry.getTargetContext(), true);
35c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin    }
36c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin
37c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin    @After
38c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin    public void closeDb() {
39c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin        mDatabase.close();
40c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin    }
419e63790830c817be832dd4f7de2b483c2f555363Sumir Kataria
427031a0fbe12b8159ab2dc6d9c50be5b3f38477faRahul Ravikumar    protected void insertWork(OneTimeWorkRequest work) {
431cd0e4eb391fb7e7d5ac60433f705496a9390384Sumir Kataria        mDatabase.workSpecDao().insertWorkSpec(getWorkSpec(work));
441cd0e4eb391fb7e7d5ac60433f705496a9390384Sumir Kataria    }
451cd0e4eb391fb7e7d5ac60433f705496a9390384Sumir Kataria
468b3284fa4a62568df91f706b0b2334284794008fSumir Kataria    protected void insertWork(PeriodicWorkRequest periodicWork) {
471cd0e4eb391fb7e7d5ac60433f705496a9390384Sumir Kataria        mDatabase.workSpecDao().insertWorkSpec(getWorkSpec(periodicWork));
489e63790830c817be832dd4f7de2b483c2f555363Sumir Kataria    }
49c4dc2081f10e02c3a002d4941f6cb4a11b9fd14fJan Clarin}
50