2021-01-29 10:36:26 +01:00
|
|
|
import { Selector } from "testcafe";
|
|
|
|
import testcafeconfig from "./testcafeconfig";
|
|
|
|
import Page from "./page-model";
|
|
|
|
import { ClientFunction } from "testcafe";
|
2021-02-17 15:51:21 +01:00
|
|
|
import fs from "fs";
|
2021-01-29 10:36:26 +01:00
|
|
|
|
|
|
|
fixture`Test photos upload and delete`.page`${testcafeconfig.url}`;
|
|
|
|
|
|
|
|
const page = new Page();
|
|
|
|
|
|
|
|
test.meta("testID", "photos-upload-delete-001")("Upload + Delete jpg/json", async (t) => {
|
2021-02-17 15:51:21 +01:00
|
|
|
await t.expect(fs.existsSync("../storage/acceptance/originals/2020/10")).notOk();
|
2021-01-29 10:36:26 +01:00
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-browse"));
|
|
|
|
await page.search("digikam");
|
|
|
|
const PhotoCount = await Selector("div.is-photo").count;
|
|
|
|
await t
|
|
|
|
.expect(PhotoCount)
|
|
|
|
.eql(0)
|
|
|
|
.click(Selector(".action-upload"))
|
|
|
|
.setFilesToUpload(Selector(".input-upload"), [
|
|
|
|
"./upload-files/digikam.jpg",
|
|
|
|
"./upload-files/digikam.json",
|
|
|
|
])
|
|
|
|
.wait(15000);
|
|
|
|
const PhotoCountAfterUpload = await Selector("div.is-photo").count;
|
|
|
|
await t.expect(PhotoCountAfterUpload).eql(1);
|
|
|
|
const UploadedPhoto = await Selector("div.is-photo").nth(0).getAttribute("data-uid");
|
|
|
|
await t.navigateTo("/library/files/2020/10");
|
|
|
|
const FileCount = await Selector("div.is-file").count;
|
|
|
|
await t.expect(FileCount).eql(2);
|
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-browse"));
|
|
|
|
await page.search("digikam");
|
|
|
|
await page.selectPhotoFromUID(UploadedPhoto);
|
|
|
|
await page.editSelected();
|
|
|
|
await t
|
|
|
|
.click("#tab-files")
|
|
|
|
.expect(Selector("div.caption").withText(".json").visible)
|
|
|
|
.ok()
|
|
|
|
.expect(Selector("div.caption").withText(".jpg").visible)
|
|
|
|
.ok()
|
|
|
|
.click(Selector(".action-close"));
|
|
|
|
await page.clearSelection();
|
2021-02-17 15:51:21 +01:00
|
|
|
await t.expect(fs.existsSync("../storage/acceptance/originals/2020/10")).ok();
|
|
|
|
const originalsLength = fs.readdirSync("../storage/acceptance/originals/2020/10").length;
|
|
|
|
await t.expect(originalsLength).eql(2);
|
2021-01-29 10:36:26 +01:00
|
|
|
await page.deletePhotoFromUID(UploadedPhoto);
|
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-browse"));
|
|
|
|
await page.search("digikam");
|
|
|
|
await t
|
|
|
|
.expect(Selector("div").withAttribute("data-uid", UploadedPhoto).exists, { timeout: 5000 })
|
|
|
|
.notOk()
|
|
|
|
.navigateTo("/library/files/2020/10");
|
|
|
|
const FileCountAfterDelete = await Selector("div.is-file").count;
|
|
|
|
await t.expect(FileCountAfterDelete).eql(0);
|
2021-02-17 15:51:21 +01:00
|
|
|
const originalsLengthAfterDelete = fs.readdirSync("../storage/acceptance/originals/2020/10")
|
|
|
|
.length;
|
|
|
|
await t.expect(originalsLengthAfterDelete).eql(0);
|
2021-01-29 10:36:26 +01:00
|
|
|
});
|
|
|
|
|
2021-02-17 15:51:21 +01:00
|
|
|
test.meta("testID", "photos-upload-delete-002")("Upload + Delete video", async (t) => {
|
|
|
|
await t.expect(fs.existsSync("../storage/acceptance/originals/2020/06")).notOk();
|
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-browse"));
|
|
|
|
await page.search("korn");
|
|
|
|
const PhotoCount = await Selector("div.is-photo").count;
|
|
|
|
await t
|
|
|
|
.expect(PhotoCount)
|
|
|
|
.eql(0)
|
|
|
|
.click(Selector(".action-upload"))
|
|
|
|
.setFilesToUpload(Selector(".input-upload"), [
|
|
|
|
"./upload-files/korn.mp4",
|
|
|
|
])
|
|
|
|
.wait(15000);
|
|
|
|
const PhotoCountAfterUpload = await Selector("div.is-photo").count;
|
|
|
|
await t.expect(PhotoCountAfterUpload).eql(1);
|
|
|
|
const UploadedPhoto = await Selector("div.is-photo").nth(0).getAttribute("data-uid");
|
|
|
|
await t.navigateTo("/library/files/2020/06");
|
|
|
|
const FileCount = await Selector("div.is-file").count;
|
|
|
|
await t.expect(FileCount).eql(1);
|
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-browse"));
|
|
|
|
await page.search("korn");
|
|
|
|
await page.selectPhotoFromUID(UploadedPhoto);
|
|
|
|
await page.editSelected();
|
|
|
|
await t
|
|
|
|
.click("#tab-files")
|
|
|
|
.expect(Selector("div.caption").withText(".mp4").visible)
|
|
|
|
.ok()
|
|
|
|
.expect(Selector("div.caption").withText(".jpg").visible)
|
|
|
|
.ok()
|
|
|
|
.click(Selector(".action-close"));
|
|
|
|
await page.clearSelection();
|
|
|
|
await t.expect(fs.existsSync("../storage/acceptance/originals/2020/06")).ok();
|
|
|
|
const originalsLength = fs.readdirSync("../storage/acceptance/originals/2020/06").length;
|
|
|
|
await t.expect(originalsLength).eql(1);
|
|
|
|
const sidecarLength = fs.readdirSync("../storage/acceptance/originals/2020/06").length;
|
|
|
|
await t.expect(sidecarLength).eql(1);
|
|
|
|
await page.deletePhotoFromUID(UploadedPhoto);
|
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-browse"));
|
|
|
|
await page.search("korn");
|
|
|
|
await t
|
|
|
|
.expect(Selector("div").withAttribute("data-uid", UploadedPhoto).exists, { timeout: 5000 })
|
|
|
|
.notOk()
|
|
|
|
.navigateTo("/library/files/2020/06");
|
|
|
|
const FileCountAfterDelete = await Selector("div.is-file").count;
|
|
|
|
await t.expect(FileCountAfterDelete).eql(0);
|
|
|
|
const originalsLengthAfterDelete = fs.readdirSync("../storage/acceptance/originals/2020/06")
|
|
|
|
.length;
|
|
|
|
await t.expect(originalsLengthAfterDelete).eql(0);
|
|
|
|
const sidecarLengthAfterDelete = fs.readdirSync("../storage/acceptance/originals/2020/06").length;
|
|
|
|
await t.expect(sidecarLengthAfterDelete).eql(0);
|
|
|
|
});
|
|
|
|
|
|
|
|
test.meta("testID", "photos-upload-delete-003")("Upload to existing Album + Delete", async (t) => {
|
2021-01-29 10:36:26 +01:00
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-albums"));
|
|
|
|
await page.search("Christmas");
|
|
|
|
const AlbumUid = await Selector("a.is-album").nth(0).getAttribute("data-uid");
|
|
|
|
await t.click(Selector("a.is-album").withAttribute("data-uid", AlbumUid));
|
|
|
|
const PhotoCount = await Selector("div.is-photo").count;
|
|
|
|
await t
|
|
|
|
.click(Selector(".action-upload"))
|
|
|
|
.click(Selector(".input-albums"))
|
|
|
|
.click(Selector("div.v-list__tile__title").withText("Christmas"))
|
|
|
|
.setFilesToUpload(Selector(".input-upload"), ["./upload-files/ladybug.jpg"])
|
|
|
|
.wait(15000);
|
|
|
|
const PhotoCountAfterUpload = await Selector("div.is-photo").count;
|
|
|
|
await t.expect(PhotoCountAfterUpload).eql(PhotoCount + 1);
|
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-browse"));
|
|
|
|
await page.search("ladybug");
|
|
|
|
const UploadedPhoto = await Selector("div.is-photo").nth(0).getAttribute("data-uid");
|
|
|
|
await page.deletePhotoFromUID(UploadedPhoto);
|
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-browse"));
|
|
|
|
await page.search("ladybug");
|
|
|
|
await t
|
|
|
|
.expect(Selector("div").withAttribute("data-uid", UploadedPhoto).exists, { timeout: 5000 })
|
|
|
|
.notOk();
|
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-albums"));
|
|
|
|
await t
|
|
|
|
.click(Selector("a.is-album").withAttribute("data-uid", AlbumUid))
|
|
|
|
.expect(Selector("div").withAttribute("data-uid", UploadedPhoto).exists, { timeout: 5000 })
|
|
|
|
.notOk();
|
|
|
|
const PhotoCountAfterDelete = await Selector("div.is-photo").count;
|
|
|
|
await t.expect(PhotoCountAfterDelete).eql(PhotoCount);
|
|
|
|
});
|
|
|
|
|
2021-02-17 15:51:21 +01:00
|
|
|
test.meta("testID", "photos-upload-delete-004")("Upload jpg to new Album + Delete", async (t) => {
|
2021-01-29 10:36:26 +01:00
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-albums"));
|
|
|
|
const AlbumCount = await Selector("a.is-album").count;
|
|
|
|
await t
|
|
|
|
.click(Selector(".action-upload", { timeout: 5000 }))
|
|
|
|
.click(Selector(".input-albums"))
|
|
|
|
.typeText(Selector(".input-albums input"), "NewCreatedAlbum")
|
|
|
|
.pressKey("enter")
|
|
|
|
.setFilesToUpload(Selector(".input-upload"), ["./upload-files/digikam.jpg"])
|
|
|
|
.wait(15000);
|
|
|
|
if (t.browser.platform === "mobile") {
|
|
|
|
await t.eval(() => location.reload());
|
|
|
|
} else {
|
|
|
|
await t.click(Selector("button.action-reload"));
|
|
|
|
}
|
|
|
|
const AlbumCountAfterUpload = await Selector("a.is-album").count;
|
|
|
|
await t.expect(AlbumCountAfterUpload).eql(AlbumCount + 1);
|
|
|
|
await page.search("NewCreatedAlbum");
|
|
|
|
await t.click(Selector("a.is-album").nth(0));
|
|
|
|
const PhotoCount = await Selector("div.is-photo").count;
|
|
|
|
await t.expect(PhotoCount).eql(1);
|
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-browse"));
|
|
|
|
await page.search("digikam");
|
|
|
|
const UploadedPhoto = await Selector("div.is-photo").nth(0).getAttribute("data-uid");
|
|
|
|
await page.deletePhotoFromUID(UploadedPhoto);
|
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-browse"));
|
|
|
|
await page.search("digikam");
|
|
|
|
await t
|
|
|
|
.expect(Selector("div").withAttribute("data-uid", UploadedPhoto).exists, { timeout: 5000 })
|
|
|
|
.notOk();
|
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-albums"));
|
|
|
|
await page.search("NewCreatedAlbum");
|
|
|
|
await t
|
|
|
|
.click(Selector("a.is-album").nth(0))
|
|
|
|
.expect(Selector("div").withAttribute("data-uid", UploadedPhoto).exists, { timeout: 5000 })
|
|
|
|
.notOk();
|
|
|
|
const PhotoCountAfterDelete = await Selector("div.is-photo").count;
|
|
|
|
await t.expect(PhotoCountAfterDelete).eql(0);
|
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-albums"));
|
|
|
|
await page.search("NewCreatedAlbum");
|
|
|
|
await t.hover(Selector("a.is-album").nth(0)).click(Selector("a.is-album .input-select").nth(0));
|
|
|
|
await page.deleteSelected();
|
|
|
|
});
|
|
|
|
|
2021-02-17 15:51:21 +01:00
|
|
|
test.meta("testID", "photos-upload-delete-005")("Try uploading nsfw file", async (t) => {
|
2021-01-29 10:36:26 +01:00
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-browse"));
|
|
|
|
await t
|
|
|
|
.click(Selector(".action-upload"))
|
|
|
|
.setFilesToUpload(Selector(".input-upload"), ["./upload-files/hentai_2.jpg"])
|
|
|
|
.wait(15000);
|
|
|
|
await page.openNav();
|
|
|
|
await t
|
|
|
|
.click(Selector(".nav-library"))
|
|
|
|
.click(Selector("#tab-library-logs"))
|
|
|
|
.expect(Selector("p").withText("hentai_2.jpg might be offensive").visible)
|
|
|
|
.ok();
|
|
|
|
});
|
|
|
|
|
2021-02-17 15:51:21 +01:00
|
|
|
test.meta("testID", "photos-upload-delete-006")("Try uploading txt file", async (t) => {
|
2021-01-29 10:36:26 +01:00
|
|
|
await page.openNav();
|
|
|
|
await t.click(Selector(".nav-browse"));
|
|
|
|
await t
|
|
|
|
.click(Selector(".action-upload"))
|
|
|
|
.setFilesToUpload(Selector(".input-upload"), ["./upload-files/foo.txt"])
|
|
|
|
.wait(15000);
|
|
|
|
await page.openNav();
|
|
|
|
await t
|
|
|
|
.click(Selector(".nav-library"))
|
|
|
|
.click(Selector("#tab-library-logs"))
|
|
|
|
.expect(Selector("p").withText(" foo.txt is not a jpeg file").visible)
|
|
|
|
.ok();
|
|
|
|
});
|