diff --git a/test/index-test.js b/test/index-test.js index 069c9bc..89e4d12 100644 --- a/test/index-test.js +++ b/test/index-test.js @@ -7,6 +7,7 @@ const network = require("./suites/network-helper-test.js").suite; const scraper = require("./suites/scraper-test.js").suite; const searcher = require("./suites/searcher-test.js").suite; const uScraper = require("./suites/user-scraper-test.js").suite; +const tags = require("./suites/tag-parser-test.js").suite; describe("Test basic function", function testBasic() { //#region Set-up @@ -15,6 +16,7 @@ describe("Test basic function", function testBasic() { describe("Test credentials class", credentials.bind(this)); describe("Test network helper", network.bind(this)); + describe("Test tag parser", tags.bind(this)); }); describe("Test F95 modules", function testF95Modules() { diff --git a/test/suites/tag-parser-test.js b/test/suites/tag-parser-test.js new file mode 100644 index 0000000..5edf426 --- /dev/null +++ b/test/suites/tag-parser-test.js @@ -0,0 +1,47 @@ +"use strict"; + +// Public module from npm +const expect = require("chai").expect; +const dotenv = require("dotenv"); +const { isEqual } = require("lodash"); + +// Modules from file +const Credentials = require("../../app/scripts/classes/credentials.js"); +const TagParser = require("../../app/scripts/classes/tag-parser.js"); +const { authenticate } = require("../../app/scripts/network-helper.js"); + +// Configure the .env reader +dotenv.config(); + +// Global variables +const USERNAME = process.env.F95_USERNAME; +const PASSWORD = process.env.F95_PASSWORD; + +module.exports.suite = function suite() { + //#region Setup + before(async function beforeAll() { + // Authenticate + const creds = new Credentials(USERNAME, PASSWORD); + await creds.fetchToken(); + await authenticate(creds); + }); + //#endregion Setup + + it("Fetch tags and parse", async function testTagParser() { + // Create a new parser + const tp = new TagParser(); + await tp.fetch(); + + const dictEquality = isEqual(tp._tagsDict, {}); + expect(dictEquality, "The dictionary should be filled with values").to.be.false; + + const testTags = ["corruption", "pregnancy", "slave"]; + const ids = tp.tagsToIDs(testTags); + const tags = tp.idsToTags(ids); + + const tagsEquality = isEqual(testTags, tags); + expect(tagsEquality, "The tags must be the same").to.be.true; + const idsEquality = isEqual([44, 103, 225], ids); + expect(idsEquality, "The IDs must be the same").to.be.true; + }); +}; \ No newline at end of file