def test_compare_tw_gcal_items(self):
        self.load_sample_items()
        diffs = TWGCalAggregator.compare_tw_gcal_items(
            tw_item=self.tw_item, gcal_item=self.gcal_item_expected)
        self.assertTupleEqual(diffs,
                              ({"entry", "urgency", "due", "id", "tags"}, {}))

        diffs = TWGCalAggregator.compare_tw_gcal_items(
            tw_item=self.tw_item_expected, gcal_item=self.gcal_item)
        self.assertTupleEqual(diffs, (set(), {}))
    def test_tw_gcal_n_back(self):
        """TW -> GCal -> TW conversion"""
        self.load_sample_items()
        tw_item_out = TWGCalAggregator.convert_gcal_to_tw(
            TWGCalAggregator.convert_tw_to_gcal(self.tw_item))

        self.assertSetEqual(
            set(self.tw_item) ^ set(tw_item_out),
            set({"entry", "due", "id", "tags", "urgency"}),
        )

        intersection = set(self.tw_item) & set(tw_item_out)
        self.assertDictEqual(
            {i: self.tw_item[i]
             for i in intersection},
            {i: tw_item_out[i]
             for i in intersection},
        )
    def test_gcal_tw_n_back(self):
        """GCal -> TW -> GCal conversion."""
        self.load_sample_items()
        gcal_item_out = TWGCalAggregator.convert_tw_to_gcal(
            TWGCalAggregator.convert_gcal_to_tw(self.gcal_item))

        self.assertSetEqual(
            set(self.gcal_item) ^ set(gcal_item_out),
            set({
                "htmlLink",
                "kind",
                "etag",
                "extendedProperties",
                "creator",
                "created",
                "organizer",
                "sequence",
                "status",
                "reminders",
                "iCalUID",
                "id",
            }),
        )
Exemple #4
0
def main(gcal_calendar, gcal_secret, tw_tags, order_by, ascending_order,
         verbose, oauth_port):
    """Main."""
    setup_logger(verbosity=verbose)
    if len(tw_tags) != 1:
        raise RuntimeError(
            "Trying with multiple tags hasn't been tested yet. Exiting...")

    logger.info("Initialising...")
    tw_config = {"tags": list(tw_tags)}

    gcal_config = {"calendar_summary": gcal_calendar, "oauth_port": oauth_port}
    if gcal_secret:
        gcal_config["client_secret"] = gcal_secret

    try:
        with TWGCalAggregator(tw_config=tw_config,
                              gcal_config=gcal_config) as aggregator:
            aggregator.start()

            # Check and potentially register items
            # tw
            tw_items = aggregator.tw_side.get_all_items(
                order_by=order_by, use_ascending_order=ascending_order)
            aggregator.register_items(tw_items, ItemType.TW)

            # gcal
            gcal_items = aggregator.gcal_side.get_all_items(
                order_by=order_by, use_ascending_order=ascending_order)
            aggregator.register_items(gcal_items, ItemType.GCAL)

            # Synchronise deleted items
            aggregator.synchronise_deleted_items(ItemType.TW)
            aggregator.synchronise_deleted_items(ItemType.GCAL)
    except KeyboardInterrupt:
        logger.info("Exiting...")
    except:
        logger.info(traceback.format_exc())
        logger.error(
            "Application failed, above you can find the error message, which you can use to"
            " create an issue at https://github.com/bergercookie/taskw_gcal_sync/issues."
        )
 def test_gcal_tw_date_convert(self):
     """GCal (with 'date' subfield) -> TW conversion."""
     self.load_sample_items()
     tw_item_out = TWGCalAggregator.convert_gcal_to_tw(
         self.gcal_item_w_date)
     self.assertDictEqual(tw_item_out, self.tw_item_w_date_expected)
 def test_gcal_tw_basic_convert(self):
     """Basic GCal -> TW conversion."""
     self.load_sample_items()
     tw_item_out = TWGCalAggregator.convert_gcal_to_tw(self.gcal_item)
     self.assertDictEqual(tw_item_out, self.tw_item_expected)
 def test_tw_gcal_basic_convert(self):
     """Basic TW -> GCal conversion."""
     self.load_sample_items()
     gcal_item_out = TWGCalAggregator.convert_tw_to_gcal(self.tw_item)
     self.assertDictEqual(gcal_item_out, self.gcal_item_expected)